我有一個helpers.py
文件限定約30輔助功能如下被導出:自動導出的所有功能(與手動指定__all__)
from helpers import *
爲了能夠做到這一點,我已經添加所有30個功能到__all__
變量。我可以自動將所有功能導出,而不必指定每個功能嗎?
我有一個helpers.py
文件限定約30輔助功能如下被導出:自動導出的所有功能(與手動指定__all__)
from helpers import *
爲了能夠做到這一點,我已經添加所有30個功能到__all__
變量。我可以自動將所有功能導出,而不必指定每個功能嗎?
是的,通過簡單地不指定__all__
。
其實我覺得Gandaro是正確的,你不必指定__all__
,但如果由於某種未知的原因,你就必須做到這一點的話,可以過濾來自目錄)的關鍵字(:
__all__ = [ helper for helper in dir() if helper == MY_CONDITION ]
好點。實際上,如果需要,您可以在模塊中以更加複雜的方式確定'__all__'的內容 - 即,您不僅限於單個語句。 – martineau
如果不定義__all__
那麼所有的模塊中的功能將通過調用from helpers import *
如果你有一些你想保密的功能,那麼你可以使用前綴與他們的名字被輸入下劃線。從我的測試,這將停止功能由import *
例如被導入,在helper.py:
def _HiddenFunc():
return "Something"
def AnActualFunc():
return "Hello"
然後:
>>> from helper import *
>>> AnActualFunc()
'Hello'
>>> _HiddenFunc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_HiddenFunc' is not defined
我想有一些非導出的方法在你的helpers.py,否則'__all__'將不會被使用... –
如果你沒有定義'__all__',那麼所有的公共名稱(那些不以'_'開頭的字符)將被語句導入。 – martineau