轉載至:https://mp.weixin.qq.com/s/PksqW03ZtlAiMhsTiH1lBg
剛學python 同學,一定會留意到,當你每創建一個包的時候,下面就會自動給你創建一個__init__.py文件,那這個文件到底有啥用呢?接下來就帶大家一起來認識一下。
在平常大家導包的時候,是不是一般這樣子import xxx.xxx.xxx 或者from xxx.xxx import xxx, 現在就有一個疑問來了,若是我現在想批量導入一些模塊呢?
肯定有同學就說了,一個一個導入不就行了嗎?你這么說,其實也沒錯,還有其他的辦法嗎?
這個時候__init__.py文件就用上了派場,因為在導包的時候,其實相當於是導入一個__init__.py文件,所以我們是不是在這個文件中配置好我們要導入的模塊,就可以實現批量導入了呢?
看實例:
以上面的目錄結構為例,我們在operConf下的__init__.py文件加入:
from operConf import confManage from operConf import globalsManage import os
再創建一個模塊,把operConf這個包導進來,並且把我們打印一下我們引用模塊的信息:
執行結果:
有沒有發現這下就可以將我們所需要的模塊全部導進來了?
其實在__init__.py文件中,有一個很重要的變量__all__,我們其實只要配置了__all__,就可以在其他模塊中直接from 包名 import * ,將配置在__all__列表中的所有模塊全部一次性導入進來。
就以上面的為例,我們再優化一下:
我們在operConf下的__init__.py文件中優化為:
from operConf import confManage from operConf import globalsManage import os __all__ = ["confManage", "globalsManage", "os"]
導入包並打印導入模塊信息:
再執行一下:
難道就這些嗎?
不,當前你可以在__init__.py文件中導入模塊中類、也可以在__init__.py文件中寫入一些函數進行導入(不建議這樣用)