假设这个包只包含一个模块:
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 *
导入时有效。
3条答案
按热度按时间2ul0zpep1#
无法对
mymodule
隐藏pi
,因为它只是模块全局名称空间的一部分,是模块对象的一个属性。解决方法是在本地导入
pi
,而不是在mymodule.py
中导入:eaf3rand2#
我不明白你为什么要这么做,因为从
mymodule
中删除pi
会导致two_pi()
不工作。无论如何,你可以使用del(mymodule.pi)
从mymodule
中删除对象pi
。您可能希望将
pi
作为参数传递给函数,当然也可以传递from mymodule import two_pi
q9yhzks03#
您可以使用以下两个文件:两个pi.py和两个pi执行py
__两个pi执行py:
两个π.py:
然后: