如何不在 Python 模块中导入导入的子模块?
How to not import imported submodules in a Python module?
在我的 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 将不会导入 datetime。
编辑: 您还可以通过不导入整个 datetime 模块来减少内存占用,只导入您需要的 methods/functions:
from datetime.datetime import now
在我的 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 将不会导入 datetime。
编辑: 您还可以通过不导入整个 datetime 模块来减少内存占用,只导入您需要的 methods/functions:
from datetime.datetime import now