更新時間:2023-05-24 來源:黑馬程序員 瀏覽量:
Python函數裝飾器是一種高級語法,用于修改或擴展函數的功能。它們允許在不修改原始函數代碼的情況下,通過將其包裝在另一個函數中來添加額外的行為。
裝飾器可以在函數執(zhí)行之前或之后添加額外的代碼邏輯,從而修改函數的行為。例如,可以使用裝飾器記錄函數的執(zhí)行時間、驗證函數參數的有效性等。
通過裝飾器,可以在函數的基礎上添加額外的功能,而不需要修改原始函數的代碼。這樣可以實現代碼的復用和模塊化。例如,可以使用裝飾器添加緩存功能、實現權限檢查等。
下面是一個示例,演示如何使用裝飾器來記錄函數的執(zhí)行時間:
import time def calculate_time(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() execution_time = end_time - start_time print(f"函數 {func.__name__} 執(zhí)行時間為: {execution_time} 秒") return result return wrapper @calculate_time def calculate_sum(a, b): time.sleep(1) # 模擬耗時操作 return a + b result = calculate_sum(3, 5) print(result)
在上面的示例中,calculate_time是一個裝飾器函數,它接受一個函數作為參數,并返回一個新的函數 wrapper。wrapper函數中記錄了函數的執(zhí)行時間,并在函數執(zhí)行完畢后打印執(zhí)行時間。通過在calculate_sum函數上方使用@calculate_time,我們將calculate_time裝飾器應用到了calculate_sum函數上。
當我們調用calculate_sum(3, 5)時,裝飾器會自動執(zhí)行,計算函數的執(zhí)行時間并打印出來。最后,函數的返回值被賦給了result變量,并進行打印。
輸出可能類似于:
函數 calculate_sum 執(zhí)行時間為: 1.001234 秒 8
這個示例展示了如何使用裝飾器來修改函數的行為,以記錄函數的執(zhí)行時間,而不需要修改原始函數的代碼。