Python __all__ 魔法方法

Python __all__ 魔法方法

引言

很多时候写代码,总是会遇到有人使用 __all__() 方法,本人每次读到都会比较困惑,这里特来记录一下这个的用法。

正文

比如我们这里有一个文件,名为 all.py,其中代码如下:

a = 1
b = 1

我们又有另外一个文件,其名称为 alls.py。其代码如下:

from all import *

print(a)
print(b)
"""
result:
1
1
"""

由于在 all.py 中定义了 ab 变量,因此,我们可以在 alls.py 中使用 from all import * 导入 all.py 中所有的变量,然后进行打印就可以得到对应的结果。

那么如果此时我们在 all.py 中加入 __all__ 的定义,如下:

__all__ = ['a']
a = 1
b = 1

再次打印我们来看一下结果:

from all import *

print(a)
print(b)
"""
result:
1
Traceback (most recent call last):
  File "C:\Softwares\PythonProject\HGXS_DataProcessing\alls.py", line 10, in <module>
    print(b)
          ^
NameError: name 'b' is not defined
"""

此时,我们看到,提示我们 b 变量没有被定义,因为我们定义的 __all__ = ['a'] 中只有 a 变量,而没有 b 变量。通过这个示例说明,__all__ 实际对应于 from all import * 中的 *

但是本人认为,__all__ 并没有实际意义,因为在导入模块中,我们不推荐使用 from all import * 的形式,这种导入方式会引入一些可能无法预测的问题,因此,这个知识点大家了解即可。对于 __all__,它也可以用来存放函数或者类对象。读者可自行探索。

如果大家觉得有用,就请点个赞吧~

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值