問題
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()