10.2 控制模塊被全部導(dǎo)入的內(nèi)容

2018-02-24 15:27 更新

問題

當(dāng)使用’from module import?*‘ 語句時(shí),希望對從模塊或包導(dǎo)出的符號進(jìn)行精確控制。

解決方案

在你的模塊中定義一個(gè)變量 all 來明確地列出需要導(dǎo)出的內(nèi)容。

舉個(gè)例子:

# somemodule.py
def spam():
    pass

def grok():
    pass

blah = 42
# Only export 'spam' and 'grok'
__all__ = ['spam', 'grok']

討論

盡管強(qiáng)烈反對使用 ‘from module import?*‘, 但是在定義了大量變量名的模塊中頻繁使用。 如果你不做任何事, 這樣的導(dǎo)入將會(huì)導(dǎo)入所有不以下劃線開頭的。 另一方面,如果定義了 all , 那么只有被列舉出的東西會(huì)被導(dǎo)出。

如果你將 all 定義成一個(gè)空列表, 沒有東西將被導(dǎo)出。 如果 all 包含未定義的名字, 在導(dǎo)入時(shí)引起AttributeError。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號