位置:首页 > Python > Python中__all__属性的作用与使用方法

Python中__all__属性的作用与使用方法

时间:2026-08-16  |  作者:怪兽小助手  |  阅读:0

Python 模块中的 __all__ 属性

在 Python 模块里,开头常会定义一个__all__属性。

它本质上是一个元组,里面列出的元素,直接决定了使用 from…import 语句进行通配符导入时,究竟哪些内容会被带进来。

也就是说,如果__all__里只写了模块中的部分内容,那么执行 from…import * 时,最终导入到程序里的,也只会是__all__中明确包含的那一部分。

__all__属性

示例模块:calc.py

假设当前有一个自定义模块calc.py。

该模块中包含计算两个数的四则运算函数,具体代码如下:

def add(a, b):
    return a + b
def subtract(a, b):
    return a - b
def multiply(a, b):
    return a * b
def divide(a, b):
    if (b):
        return a / b
    else:
        print("error")

设置 __all__ 的效果

在calc模块中设置__all__属性为["add", "subtract"]。

此时其他Python文件导入calc模块后,只能使用calc模块中的add()与subtract()函数。

示例代码如下:

__all__ = ["add", "subtract"]

使用 from ...import * 导入

通过“from ...import *”方式导入calc模块。

然后使用该模块中的add()函数与subtract()函数,具体如下。

from calc import *
print(add(2, 3))
print(subtract(2, 3))

运行程序,结果如下所示。

5
-1 

未包含在 __all__ 中的函数

下面尝试使用calc模块的multipty()和divide()函数,具体代码如下。

print(multipty(2, 3))
print(divide(2, 3))

运行程序,出现如下所示的异常信息:

NameError: name 'multiply' is not defined

结论

  • __all__用于控制“from ...import *”时可以导入哪些内容。
  • 如果某个函数没有写入__all__,那么执行通配符导入后,就不能直接使用该函数。
  • 在本例中,只有add()和subtract()被导入。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多