不管是用import還是用from mmmm import *的方式匯入模組,當程式執行之後,回頭在看那個儲存著mmmm.py檔案的目錄中(關於mmmm.py檔案可以看上一講),多了乙個檔案:
qw@qw-latitude-e4300:~/documents/itarticles/basicpython/codes$ ls mmm*
mmmm.py mmmm.pyc
在這個目錄下面,除了原來的那個mmmm.py之外,又多了乙個mmmm.pyc檔案,這個檔案不是我寫的,是**來的呢?
要破開此迷,需要用import的過程說起。
import mmmm,並不是僅僅將mmmm.py這個檔案裝載到當前位置(檔案內),其實是首先進行了一次運算。當mmmm.py被第一次匯入的時候,python首先要對其進行編譯,生成擴充套件名為.pyc的同名檔案,然後才執行mmmm模組的**,建立相應的物件等。就如同把大象裝進冰箱,有三步要執行:
搜尋。就是python要能夠找到import的模組。怎麼找到,後面講述。
執行。這就沒什麼好說的了,生公尺已經淘乾淨了,並且放到鍋裡,開始加熱了,最後就只能熟飯了。執行就是前面已經編譯的模組位元組碼檔案,順理成章要執行了。
一般情況下,python會自動的完成模組搜尋過程。但是,在某些情況下,或許會要求程式設計師來設定搜尋路徑。當import乙個模組後,python會按照下面的順序來找那個將要匯入的模組檔案
程式的主目錄。上一講中,在codes這個目錄中執行互動模式,這時候的主目錄就是codes,當在那個互動模式中執行import mmmm的時候,就首先在codes這個目錄中搜尋相應的檔案(找到.py之後編譯成為.pyc)。當然,後面在網頁程式設計中,看官會看到,所謂主目錄是可以通過頂層檔案設定的目錄。
pythonpath目錄。這是乙個環境變數設定,如果沒有設定則濾去。如何進行環境變數設定,請看官google啦。
標準庫目錄。已經隨著python的安裝進入到計算機中的那個。
任何.pth檔案的內容。如果有這類檔案,最後要在這類檔案中搜尋一下。這是乙個簡單的方法,在.pth檔案中,加入有效目錄,使之成為搜尋路徑。下圖就是我的計算機上,存放.pth檔案的位置以及裡面放著的.pth檔案
看官也可以自己編寫.pth檔案,裡面是有關搜尋目錄,儲存到這裡。比如,開啟目錄中的easy-install.pth檔案,發現的內容:
搜尋就是這麼乙個過程。這裡建議看官了解即可,不一定非要進行什麼設定,在很多情況下,python都是會自動完成的。特別是初學者,暫且不要輕舉妄動。
在乙個shell裡面,執行了python,並且做了如下操作:
>>> import mmmm
>>> mmmm.web
''
儲存之後,切換到原來的那個匯入了模組的互動模式:
>>> mmmm.web
''
輸出的跟前面的一樣,沒有任何變化,這是為什麼呢?
>>> reload(mmmm)
>>> mmmm.web
', i am writing a python book on line.'
這下就顯示修改之後的內容了。 零基礎學python 模組的載入
不管是用import還是用from mmmm import 的方式匯入模組,當程式執行之後,回頭在看那個儲存著mmmm.py檔案的目錄中 關於mmmm.py檔案可以看上一講 多了乙個檔案 qw qw latitude e4300 documents itarticles basicpython co...
零基礎學python Import 模組
對於模組,在前面的一些舉例中,已經涉及到了,比如曾經有過 import random 獲取隨機數模組 為了能夠對模組有乙個清晰的了解,首先要看看什麼模組,這裡選取官方文件中對它的定義 都是洋碼子,翻譯一下不?不!還是只說要點 那麼,那個import random的檔案在 呢?用曾經講過的那個法寶 h...
零基礎學Python
零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...