一般的Python程序的構架是指:將一個程序分割爲源代碼文件的集合以及將這些部分鏈接在一塊兒的方法。網絡
Python的程序構架可表示爲:app
一個Python程序就是一個模塊的系統。它有一個頂層文件(啓動後可運行程序)以及多個模塊文件(用來導入工具庫)。
注:標準庫模塊:Python中自帶的實用模塊,也稱爲標準連接庫,這個集合體大約有200多個模塊,包含於平臺不相關的常見程序設計任務:操做系統接口、對象永久保存、文字匹配模式、網絡和Internet腳本、GUI建構等。注意:這些工具都不是Python語言的組成部分,可是,能夠在任何安裝了標準Python的狀況下,導入適當的模塊來使用。函數
概念:模塊是Python 中最高級別的組織單元,它將程序代碼和數據封裝起來以便重用。其實,每個以擴展名 .py 結尾的Python文件都是一個模塊。
模塊的三個角色:工具
程序和模塊:Python中,程序是做爲一個主體的、頂層的文件來構造的,配合有零個或多個支持的文件,然後者這些文件均可以稱做模塊(頂層的文件也能夠做爲模塊使用,但通常狀況不做爲模塊)。
頂層文件:包含了程序的主要的控制流程:即須要運行來啓動應用的文件。
模塊文件:可看作是工具的倉庫(即裝滿了工具),這些工具是用來收集頂層文件(或其餘可能的地方)使用的組件。
頂層文件與模塊文件:頂層文件使用了在模塊文件中定義的工具,爲這些模塊也使用了其餘模塊所定義的工具。
模塊的執行環境:模塊包含變量、函數、類以及其餘的模塊(若是導入的話),而函數也有本身的本地變量。下圖描述了模塊內的狀況以及與其餘模塊的交互,即 模塊的執行環境:學習
可見:模塊能夠被導入,但模塊也會導入和使用其餘模塊,這些模塊能夠用Python或其餘語言(如,C語言)寫成。spa
概念:一個文件可經過導入一個模塊(文件)讀取這個模塊的內容,即導入從本質上講,就是在一個文件中載入另外一個文件,而且可以讀取那個文件的內容。一個模塊內的內容經過這樣的屬性(object . attribute)可以被外界使用。
導入是Python中程序結構的重點所在。操作系統
import a moudle時,首先,Python解釋器會檢查module registry(sys.moudles)部分,查看是否該模塊先前就已經導入,若是sys.modules 中已經存在(即已註冊),則使用當前存在的模塊對象便可。若是 sys.modules 中還不存在,則:設計
而後在新的模塊命名空間、執行該模塊代碼對象(code object)。全部由該代碼指定的變量都可以經過該模塊對象引用。
注:上述步驟只有在模塊第一次執行時纔會執行。在這以後,導入相同模塊時,會跳過這些步驟,而只提取內存中已加載的模塊對象。這是個有意設計的結果。由於導入(找文件--將其編譯成字節碼--運行代碼)是一個開銷很大的操做以致於每一個程序運行不可以重複多於一次。若想要Python 在同一次會話中再次運行文件(不中止和從新啓動會話),須要調用內置的reload(重載)函數(該函數返回值爲一個Python模塊對象)。code
以上四個組件組合起來就變成了 sys.path,其保存了模塊搜索路徑在機器上的實際配置,能夠經過打印內置的sys.path 列表來查看這些路徑。導入時,Python會由左至右搜索列表中的每一個目錄,知道找到對應的module爲止。
其中搜索路徑的(1)和(3)是系統自動定義的,而(2)(4)能夠用於拓展路徑,從而加入本身的源代碼目錄。
另外:也可使用sys.path在Python程序運行時臨時修改模塊搜索路徑。
如:對象
import sys sys.path.append('C:\\mydir')
注:以上sys.path的設置方法只是在程序運行時臨時生效的,一旦程序結束,不會被保留下來。而前面介紹的四種路徑配置方式則會在操做系統中永久保存下來。
一、《Python 學習手冊》第3章、第18章以及第19章二、Importing Python Modules from effot.org