2.1 了解套件
套件是將模組結構化至目錄中的方式。 套件是一個目錄,包含一個 __init__.py 文件以及一個或多個模組。文件 __init__.py 可以是空的,也可以包含套件初始化的代碼。
套件/目錄結構範例
mypackage/
__init__.py
module1.py
module2.py
__init__.py 文件內容 |
|---|
|
module1.py 文件內容 |
|---|
|
module2.py 文件內容 |
|---|
|
一段使用此套件中函數的代碼範例:
import mypackage
print(mypackage.func1()) # 輸出:Function 1
print(mypackage.func2()) # 輸出:Function 2
我們來嘗試寫一個自己的套件,順便了解外部套件如何運作。
2.2 一步步創建自己的套件
步驟 1: 創建套件結構
第一步是為你的套件創建目錄和文件結構。作為範例,我們將創建一個名為 mypackage 的套件,包含兩個模組: module1.py 和 module2.py。
套件結構範例:
mypackage/
__init__.py
module1.py
module2.py
文件描述:
-
__init__.py: 這個文件可以是空的,也可以包含 套件初始化代碼。它告訴 Python 這個目錄是一個套件。 -
module1.py和module2.py: 這些文件 包含你想要包含在套件中的函數、類別和變數。
步驟 2: 為模組編寫代碼
我們來為模組編寫簡單的代碼。
module1.py
def func1():
return "Function 1 from module1"
module2.py
def func2():
return "Function 2 from module2"
__init__.py
為了將模組中的函數導入到套件層級中,我們將它們加到 __init__.py。
from .module1 import func1
from .module2 import func2
現在當你導入套件時,函數 func1 和 func2 可以直接使用。
步驟 3: 測試套件
創建一個 test.py 文件在 mypackage 目錄所在的同一目錄下, 並在此文件中使用套件進行測試。
test.py
import mypackage
print(mypackage.func1()) # 輸出:Function 1 from module1
print(mypackage.func2()) # 輸出:Function 2 from module2
運行 test.py,確保你的套件正常工作。
2.3 使用 dir() 函數
當你導入一個模組或套件時,你可以使用 dir() 函數 來獲取該模組中所有可用的屬性和方法列表。這非常有用,尤其是在 你使用新模組或不熟悉的模組時,可以快速了解它提供了哪些函數和類別。
範例:調查標準模組 math
下一個例子演示了如何使用 dir() 來調查 標準模組 math。
import math
print(dir(math))
這段代碼將導入 math 模組並輸出所有可用的屬性和方法列表。結果看起來大概是這樣的:
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
這個列表包括模組 math 中所有的函數和常數,例如 sin、cos、tan、pi 等。
使用 dir() 對自定義模組
你也可以對自定義(你自己的)模組使用 dir()。假設你有一個文件 mymodule.py,內容如下:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
pi = 3.14159
你可以導入此模組並使用 dir() 來調查它的內容:
import mymodule
print(dir(mymodule))
結果將如下:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__',
'greet', 'pi']
此列表包括模組 mymodule 的 8 個內建屬性(用下劃線括住),最後是你的方法 greet 和變數 pi。
GO TO FULL VERSION