假设这个包只包含一个模块:
mypackage/
__init__.py
mymodule.py
__init__.py
文件为空。模块mymodule.py
如下:
from math import pi
def two_pi():
return 2 * pi
这是mymodule
的内容:
>>> from mypackage import mymodule
>>> dir(mymodule)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'pi', 'two_pi']
导入模块时对象 pi
存在,但我不希望它存在。
如何避免 pi
出现在 mymodule
中?
我尝试定义 __all__ = ['tow_pi']
,但这仅在使用 from mypackage.mymodule import *
导入时有效。
最佳答案
无法从 mymodule
中隐藏 pi
,因为它只是模块全局命名空间的一部分,即模块对象的一个属性。
解决方法是在本地导入 pi
,而不是在 mymodule.py
中导入:
def two_pi():
from math import pi
return 2 * pi
关于python - 如何在导入 python 模块时排除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74938977/