如果我有一个包含以下内容的模块/文件 foo.py
:
from math import sqrt
def foo():
pass
如果我在另一个脚本中导入它,sqrt
也会在模块 foo
中定义。
import foo
dir(foo)
其输出为
[..., # other things
'foo',
'sqrt']
我该如何防止这种情况发生?即,要么指定 sqrt
不导出,要么仅导出特定函数 - 在这种情况下,仅导出用户定义的函数。我知道对于用户定义的函数,您可以通过在模块中添加下划线作为前缀来私下定义它们,但在这种情况下,它不是用户定义的函数,因此我无法使用下划线前缀来定义它。
最佳答案
in this case it's not a user-defined function so I can't define it with an underscore prefix.
是的,你可以:
from math import sqrt as _sqrt
另一种方法是只在函数作用域中需要的地方导入对象。
(虽然这可能会回答您的问题,但我仍然不知道您为什么要这样做。这两种选择都很麻烦,不会让您的代码库看起来更好。)
关于python - 不从 Python 模块导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295277/