python的每個模塊的包中,都有一個__init__.py文件,有了這個文件,我們才能導入這個目錄下的module。
那麼,__init__.py還有什麼別的功能呢?
其實,__init__.py裡面還是可以有內容的,我們在導入一個包時,實際上導入了它的__init__.py文件。
我們可以再__init__.py文件中再導入其他的包,或者模塊。
這樣,當我們導入這個包的時候,__init__.py文件自動運行。幫我們導入了這麼多個模塊,我們就不需要將所有的import語句寫在一個文件裡了,也可以減少代碼量。
不需要一個個去導入module了。
__init__.py 中還有一個重要的變量,叫做 __all__。我們有時會使出一招“全部導入”,也就是這樣:
from PackageName import *
這時 import 就會把注冊在包 __init__.py 文件中 __all__ 列表中的子模塊和子包導入到當前作用域中來。比如:
#文件 __init__.py __all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]