CodeGym /課程 /Python SELF TW /創建自己的套件

創建自己的套件

Python SELF TW
等級 19 , 課堂 1
開放

2.1 了解套件

套件是將模組結構化至目錄中的方式。 套件是一個目錄,包含一個 __init__.py 文件以及一個或多個模組。文件 __init__.py 可以是空的,也可以包含套件初始化的代碼。

套件/目錄結構範例


mypackage/
    __init__.py
    module1.py
    module2.py
__init__.py 文件內容

# __init__.py
from .module1 import func1
from .module2 import func2
module1.py 文件內容

# module1.py
def func1():
    return "Function 1"
module2.py 文件內容

# module2.py
def func2():
    return "Function 2"

一段使用此套件中函數的代碼範例:


import mypackage

print(mypackage.func1())  # 輸出:Function 1
print(mypackage.func2())  # 輸出:Function 2

我們來嘗試寫一個自己的套件,順便了解外部套件如何運作。

2.2 一步步創建自己的套件

步驟 1: 創建套件結構

第一步是為你的套件創建目錄和文件結構。作為範例,我們將創建一個名為 mypackage 的套件,包含兩個模組: module1.pymodule2.py

套件結構範例:


mypackage/
    __init__.py
    module1.py
    module2.py

文件描述:

  • __init__.py: 這個文件可以是空的,也可以包含 套件初始化代碼。它告訴 Python 這個目錄是一個套件。
  • module1.pymodule2.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

現在當你導入套件時,函數 func1func2 可以直接使用。

步驟 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所有的函數和常數,例如 sincostanpi 等。

使用 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

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION