__all__
是一个列表,可使表外成员全体私有化- 该关键字只对
from xxx import *
有用
例子
pak.py
#-*- coding:utf-8 -*-
__all__=['fun1','_fun1','__fun1']
def fun1():
print("fun1 be called")
def _fun1():
print("_fun1 be called")
def __fun1():
print("__fun1 be called")
call.py
from pak import *
fun1()
_fun1()
__fun1()
如果没有__all__
把后面两个包含进来,那么call.py是会报错的,提示NameError: name ‘_fun1’ is not defined。
这是因为默认的import *
只引用公有可见方法,也就是不带下划线的。