在我的 Python 模块中,我经常使用诸如 datetime
之类的子模块。问题是这些模块可以从外部访问:
# module foo
import datetime
def foosay(a):
print "Foo say: %s" % a
来自 IPython:
import foo
foo.datetime.datetime.now()
我想知道如何正确隐藏foo
内部业务的子模块。
我天真地想过import datetime as _datetime
或者甚至import datetime as __datetime
,但这不是一个非常令人愉快的解决方案。我还读过有关 __all__
的内容,但它只涉及使用 from foo import *
导入的内容。
最佳答案
您可以在模块 foo 中使用它的函数中执行导入日期时间:
def foodate():
import datetime
print datetime.datetime.now()
def foosay(a):
print "Foo say: %s" % a
现在导入 foo 将不会导入日期时间。
编辑:您还可以通过不导入整个日期时间模块,仅导入您需要的方法/函数来减少内存占用:
from datetime.datetime import now
关于python - 如何不导入Python模块中导入的子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39993663/