问题
Python编程时,涉及到多模块的复杂编程时,经常会看到变量__all__,那么该变量的作用是什么呢?
方法
新建一个func.py文件,编写两个简单函数foo和_bar,如下:
def foo(): print('foo') def _bar(): print('bar')
新建一个test.py文件,测试导入。
from func import * foo() _bar()
运行后,发现foo()可以正常调用,而_bar()则报错。
以上表明,当以下划线"_"开头的变量、函数、类在进行导入时,均为私有,因此,如果想设置某变量/函数/类导出后不可见,可按照此法。
假如,我对下划线开头的命令方式十分敏感,那么可有其他方式代替,答案就是__all__,只需要在__all__变量中指明需要导出的元素即可,如下所示:
def foo(): print('foo') def _bar(): print('bar') def foobar(): print('foobar') def barfoo(): print('barfoo') __all__ = ['foobar', '_bar']
下面调用:
from func import * foo() # 出错 _bar() # 即使是_开头,只要__all__中指出,依然可用 foobar()
结语
关于__all__,如果没有上述简洁明了的介绍,真正遇到了,还真搞不明白!希望本文对你能有所帮助。