不管是用import還是用from mmmm import *的方式導入模塊,當程序運行之后,回頭在看那個存儲著mmmm.py文件的目錄中,多了一個文件:
$ ls mmm*mmmm.py mmmm.pyc
在這個目錄下面,除了原來的那個mmmm.py之外,又多了一個mmmm.pyc文件,這個文件不是我寫的,需要用import的過程說起。
import的工作流程
import mmmm,并不是僅僅將mmmm.py這個文件裝載到當前位置(文件內),其實是首先進行了一次運算。當mmmm.py被第一次導入的時候,python首先要對其進行編譯,生成擴展名為.pyc的同名文件,然后才執行mmmm模塊的代碼,創建相應的對象等。就如同把大象裝進冰箱,有三步要執行:
搜索。就是python要能夠找到import的模塊。怎么找到,后面講述。 編譯。找到模塊文件之后,將其編譯成字節碼,就是那個.pyc文件里面的(關于字節碼,下面會介紹,請繼續閱讀)。注意,不是什么時候都編譯的,只有第一次運行時候才編譯,如果mmmm.py文件改變了,相當于又一個新文件,也會從新編譯。其實就是.pyc文件中有一個時間戳,python會自動檢查這個時間戳,如果它比同名的.py文件時間戳舊,就會從新編譯。否則跳過。當然,如果根本就沒有找到同名的.py源文件,只有字節碼文件.pyc,那么就只能運行這個了。 運行。執行就是前面已經編譯的模塊字節碼文件,順理成章要執行了。搜索模塊
一般情況下,python會自動的完成模塊搜索過程。但是,在某些情況下,或許會要求程序員來設定搜索路徑。當import一個模塊后,python會按照下面的順序來找那個將要導入的模塊文件

也可以自己編寫.pth文件,里面是有關搜索目錄,保存到這里。比如,打開目錄中的easy-install.pth文件,發現的內容:
新聞熱點
疑難解答