首頁 > 後端開發 > Python教學 > Python 裝飾器:更了解功能增強

Python 裝飾器:更了解功能增強

Linda Hamilton
發布: 2024-11-19 22:09:02
原創
1001 人瀏覽過

Python Decorators: More Understanding into Functionality Enhancement

讓我們超越基礎知識來深入了解裝飾器。裝飾器不僅僅是“額外的層”,而且提供了一種複雜的方法來動態地向函數添加功能,使它們具有高度的適應性和強大的功能。


1.什麼是裝飾器?

本質上,裝飾器是一個高階函數——一個接受另一個函數作為參數、添加功能並傳回一個新函數的函數。這允許我們用附加功能「裝飾」原始函數,而不改變原始函數。

文法回顧:

在 my_function 之前使用 @decorator_name 是以下形式的簡寫:


2.建造一個基本的裝飾器

讓我們建立一個簡單的裝飾器,在呼叫函數時記錄日誌。

  • log_call 是一個包裝greet的裝飾器。
  • *args 和 `kwargs`** 確保它可以與任意數量的位置或關鍵字參數一起使用。

3.現實世界的用例

裝飾器通常用於:

  • 存取控制:例如,檢查使用者權限。
  • 快取:儲存昂貴的函數呼叫的結果。
  • 重試機制:失敗時自動重試函數。
  • 輸入驗證:在函數運行之前檢查參數。

4.附參數的裝飾器

有時,裝飾器需要額外的參數。在這些情況下,我們會新增一個外部函數來將參數傳遞給裝飾器。

範例

這裡,repeat 是一個裝飾器工廠,它根據 times 參數產生一個裝飾器。


5.堆疊裝飾器

您可以在單一函數上堆疊多個裝飾器,創建強大的行為鏈。

範例

堆疊@make_bold和@make_italic以粗體和斜體標籤迎接。


6.使用 functools.wraps 儲存元資料

裝飾函數時,您通常希望保留原始函數的元資料(如其名稱和文件字串)。使用 functools.wraps 確保您的包裝器不會覆蓋這些詳細資訊。

@wraps(func) 確保保留 func 的名稱和文件字串。


7.類中的裝飾器

裝飾器不僅用於獨立功能;它們也可以與類別方法一起使用。

範例

require_auth 裝飾器在允許存取 access_dashboard 方法之前檢查使用者是否經過身份驗證。


結論:用裝飾器增強你的程式碼

裝飾器是 Python 的寶貴組成部分,它允許您以靈活且可重複使用的方式增強、修改和控制函數行為。它們使您的程式碼更具表現力、模組化和優雅。使用裝飾器,您不僅可以添加功能,還可以完善和豐富您的程式碼庫。

以上是Python 裝飾器:更了解功能增強的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板