模組是一個包含Python程式碼的檔案,其可能包含函數、變數、或是類別。而模組名稱則為檔名
套件是一個包含一個或多個模組(Python程式碼檔案)的目錄(資料夾)
套件名稱則為最上層目錄的名稱
套件本質上為模組的延伸,旨在處理大型專案
可將相關模組放在一個目錄(套件)下
Example:
Python要求目錄中必須包含__init__.py
檔,才能將此目錄視為套件。此要求可避免將不屬於套件的程式碼目錄意外被匯入
第一次匯入套件時,Python會自動執行__init__.py
檔,故可將套件初始化之程式碼放在__init__.py
如套件不需要初始化動作,則__init__.py
可不放任何程式碼,只需有一個空的__init__.py
__all__
定義import *
要匯入的名稱__all__
用於指定『from … import *
』要匯入哪些子套件、模組、函數,變數等名稱print("Hello from mathproj init")
__all__ = ['comp']
vesion = 1.03
from mathproj import *
comp
# <module 'mathproj.comp'>........
# version
# NameError: name 'version' is not defined
套件不應使用太多層的目錄結構—Flat is Better than Nested
套件是包含Python程式碼的目錄,將相關模組聚集在一起
不要濫用__all__
,容易產生名稱衝突的情況