模組
模組用來組織代碼,包是用來組織模組的。自我包含並且有組織的程式碼片段就是模組
- 預設搜尋路徑修改:一個是啟動Python的shell或命令列的PYTHONPATH環境變數。在解譯器裡的sys模組的sys.path變數儲存這些目錄路徑。
- 名稱空間是名稱(標識符)到對象的映射。執行期間有兩個或三個活動的名稱空間:局部名稱空間,全域名稱空間,內建名稱空間。Python解譯器會首先載入內建名稱空間,隨後載入執行模組的全域名稱空間。執行期間調用函數,建立出局部名稱空間
- __builtins__模組和__builtin__模組:__builtins__模組包含內建名稱空間中內建名字的集合。大多數來自__builtin__模組。__builtins__包含__builtin__的所有名字。
- 無限制的名稱空間:可以在任何需要放置資料的地方獲得一個名稱空間。
〈li> 建議所有的模組在Python模組的開頭部分匯入。順序為:Python標準庫模組,python第三方模組,應用程式自訂模組。
匯入指定名稱:from module import name[, name2[,... nameN]]
不建議使用from Module import *語句。可以使用import Name as MyName來使用自己喜歡的名字替換原本的名字
無論匯入多少次,模組只被載入一次。載入模組將導致模組被執行。
- from __future__import new_feature : 匯入將來會逐漸確定的新特性。只imort __futrue__被禁止,引腳為它不會啟用所有特性,不許顯示的匯入指定特性。
- Python 支援從ZIP歸檔檔案中匯入模組的功能。匯入時會把ZIP檔案當做目錄處理,因此,可以把ZIP檔案寫入到檔案路徑中。
- 模組內建函數
- __import__():import語句調用__import__()函數來完成工作。文法為:
__import__(module_name[, globals[, locals[, formalist]]])
globals,locals,formlist預設為globals(),locals(),[]。
- globals()返回調用者全域名稱空間的字典。locals()返回調用者局部名稱空間的字典。
- reload()重新匯入一個已經匯入的模組。 :reload(module)
- 包是一個有層次的檔案目錄結構。定義了一個由模組和子包組成的Python應用程式執行環境。包也使用據點屬性標識來訪問他們的元素。
- 對於目錄結構,同樣可以使用import Upper.sub 和from-import語句。from package.module import *語句使得匯入的檔案取決於作業系統的檔案系統。在__init__.py中加入__all__變數。它是一個由執行該語句時會匯入的模組名字組成的列表。
- 絕對匯入:匯入的模組名字必須通過Python路徑(sys.path或是PYTHONPATH)來訪問。絕對匯入已成為預設功能。
- 相對匯入:import語句總是絕對匯入的,相對匯入只應用於from-import語句。
- 當Python解譯器在標準模組下啟動時,一些模組會被解譯器自動匯入。sys.modules變數包含一個由當前載入(完整且成功匯入)到解譯器的模組組成的字典。模組名為鍵,位置為值。
- 阻止屬性匯入:如果不想讓某個模組屬性被“from module import *”匯入,給你不想匯入的屬性名稱加上一個底線(_)