python - 如何在导入 python 模块时排除对象

标签 python python-3.x python-import

假设这个包只包含一个模块:

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/

相关文章:

python - 导入错误:没有名为 'flask.ext' 的模块

python - 使docker容器通过端口进行通信

python - 通过 Python API 获取所有 Woocommerce 订单

python - 装饰方法赋值前引用的局部变量

Python:在文本文件中搜索字符串并显示匹配的行

multithreading - 如何在python线程中使用pyttsx

python - 如果一直不需要模块,导入模块的最佳方法是什么?

python - 我如何从加载了 imp 的模块中获取 `import *`?

Python 读取 .txt 文件头

python - Django 找不到静态文件