繁体   English   中英

如何不在 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 模块来减少内存占用,只导入您需要的方法/函数:

from datetime.datetime import now

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM