Python : __init__.py的做用

1、__init__.py的做用: python

        在使用PyDev插件,在Eclipse建立package時,會自動在package所在的目錄自動建立一個__init__.py文件,且文件內容爲空。這個文件有什麼有呢? 函數

       __init__.py的做用有以下幾點: spa

       1. 至關於class中的def __init__(self):函數,用來初始化模塊。 操作系統

       2. 把所在目錄看成一個package處理
插件

       3. from-import 語句導入子包時須要用到它。 若是沒有用到, 他們能夠是空文件。 xml

           如引入package.module下的全部模塊
           from package.module import * 
           這樣的語句會導入哪些文件取決於操做系統的文件系統. 因此咱們在__init__.py 中加入 __all__變量. 
對象

           該變量包含執行這樣的語句時應該導入的模塊的名字. 它由一個模塊名字符串列表組成. ip


2、python在執行import語句時的步驟
字符串

    1:建立一個新的,空的module對象(它可能包含多個module);
    2:把這個module對象插入sys.module中
    3:裝載module的代碼(若是須要,首先必須編譯)
    4:執行新的module中對應的代碼。
it

    在執行第3步時,首先要找到module程序所在的位置,其原理爲:若是須要導入的module的名字是module1,則解釋器必須找到module1.py。

    它首先在當前目錄查找,而後是在環境變量PYTHONPATH中查找。PYTHONPATH能夠視爲系統的PATH變量一類的東西,其中包含若干個目錄。若是PYTHONPATH沒有設定,或者找不到module1.py,則繼續搜索與python的安裝設置相關的默認路徑,在Unix下,一般是/usr/lib64/python2.6/。

    事實上,搜索的順序是:當前路徑 (以及從當前目錄指定的sys.path),而後是PYTHONPATH,而後是python的安裝設置相關的默認路徑。正由於存在這樣的順序,若是當前 路徑或PYTHONPATH中存在與標準module一樣的module,則會覆蓋標準module。也就是說,若是當前目錄下存在xml.py,那麼執 行import xml時,導入的是當前目錄下的module,而不是系統標準的xml。

相關文章
相關標籤/搜索