Python模組是什麼(超級詳細)

2020-07-16 10:05:27
我們之前介紹函數是完成特定功能的一段程式,是可複用程式的最小組成單位;類是包含一組資料及操作這些資料或傳遞訊息的函數的集合。模組是在函數和類的基礎上,將一系列相關程式碼組織到一起的集合體。在 Python 中,一個模組就是一個擴充套件名為 .py 的源程式檔案。

為了方便呼叫將一些功能相近的模組組織在一起,或是將一個較為複雜的模組拆分為多個組成部分,可以將這些 .py 源程式檔案放在同一個資料夾下,按照 Python 的規則進行管理,這樣的資料夾和其中的檔案就稱為包,庫則是功能相關聯的包的集合。

例如,為了設計一套統一處理圖片檔案和資料的 Python 程式,可以考慮採用如下所示的包結構。

images/
               __init__.py
               formats/
                                   __init__.py
                                   jpg.py
                                   png.py
                                   bmp.pv
                                   tif.pv
                                   ……
               effects/
                                   __init__.py
                                   fade.py
                                   fuzzy.py


其中,images 目錄是頂層包名;__init__.py 用來宣告該資料夾是一個 Python 包的源程式目錄;formats 目錄下存放對應不同檔案格式的圖片處理程式,格式名就是檔名;effects 目錄下存放的是處理效果的模組。

在匯入一個包時,Python 首先在當前包中查詢模組,若找不到則在內建的 built-in 模組中查詢,仍然找不到的話會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。目錄只有包含 __init__.py 檔案時才會被認作是一個包,最簡單的就是建立一個內容為空的檔案並命名為 __init__.py。事實上 __init__.py 還應定義 __all__ 用來支援模糊匯入。

可以使用以下語句檢視當前系統的 Python 搜尋路徑:
import sys
sys.path
上述程式碼的執行結果如下所示:

>>> import sys
>>> sys.path
['', 'C:ProgramsPythonPython37python37.zip', 'C:ProgramsPython37DLLs', 'C:ProgramsPython37lib', 'C:ProgramsPython37', 'C:ProgramsPython37libsite-packages']


需要注意的是,Python 安裝目錄下的 Lib 資料夾記憶體放了內建的標準庫,如圖 1 所示。

Python內置標準庫存放在Lib目錄下
圖 1:Python 內建標準庫存放在Lib目錄下