深南之星

导航

 

Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现
1、在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,
如:全局变量,函数,类。如下,test001.py和test002.py
test001:

__all__ = ['A','B']
def A():
print("a")

def B():
print("b")


def C():
print("c")


def _d():
print("d")

test002:
from test.test001 import *
A()
B()
#C() # 会抛错

那么在模块中的__all__变量就是为了限制或者指定能被导入到别的模块的函数,类,全局变量等,如果指定了那么只能是指定的那些可以被导入,没有指定默认就是全部可以导入,当然私有属性应该除外。(私有属性默认是不会被导入的)

 

2. 在包下的__init__.py中

在 test/__init__.py中加入 __all__ = ['test001','test002']
在from test import *,只会导入all里面定义的2个函数;当__init__.py为空时,只是导入这个包,并非导入模块,因为导入 包时会首先执行下__init__.py这个文件
from . import test001 导入当前目录下的test001模块
from .. import test001 导入上一层目录下的test001模块

 

posted on 2020-02-24 09:46  深南之星  阅读(73)  评论(0编辑  收藏  举报