在很多源码里面都看到__all__=[var1,var2,var3]类似的定义,这个会影响到导入模块的范围
比如文件a.py
__all__=['a1','b']
a1=1
def b():
print("b")
c=3
#文件b.py
from testTmp.a import *
print(a1)
print(b())
print(c)
运行结果:
```Traceback (most recent call last):
File "D:/AUTO/WEBAuto_pythonV2.3_20200323/testTmp/b.py", line 4, in <module>
print(c)
NameError: name 'c' is not defined
1
b
None
```clike
#文件b1.py
from testTmp.a import a1,b,c
print(a1)
print(b())
print(c)
运行结果:
1
b
None
3
根据上述的例子可以看出__all__定义了一个列表,列表包含变量已经函数,定义的意思是别的文件在导入这个定义过的py文件的时候,如果使用了from module import *则只导入定义过的模块,没有定义过的则不导入,根据b1.py和b.py文件的对比可以看出,__all__的定义只对定义from module import *这种导入有影响,如果直接指定了导入的方法或者变量则不受影响