首頁 >後端開發 >Python教學 >如何在 Python 中建立和連結函數裝飾器?

如何在 Python 中建立和連結函數裝飾器?

DDD
DDD原創
2024-12-24 19:47:15855瀏覽

How to Create and Chain Function Decorators in Python?

如何建立函數裝飾器並將它們連結在一起

簡介

Python 中的裝飾器允許您可以修改函數的行為而不修改函數本身。您可以使用裝飾器在呼叫函數之前和之後新增功能、檢查輸入/輸出以及執行其他操作。

建立裝飾器

建立裝飾器,定義一個將另一個函數作為參數的函數。此函數應傳回一個包裝原始函數的新函數。

def make_bold(fn):
    # The new function the decorator returns
    def wrapper():
        # Insertion of some code before and after
        return "<b>" + fn() + "</b>"
    return wrapper

連結裝飾器

您可以連結裝飾器以對函數套用多個修改。只需依序套用每個裝飾器,如下所示:

@make_bold
@make_italic
def say():
    return "hello"

此程式碼將 make_bold 裝飾器套用到 make_italic 裝飾器,後者應用到 say 函式。結果是 say 函數傳回一個粗體和斜體的字串。

範例:連結裝飾器以格式化文字

假設您有一個傳回 a 的函數文字字串。您想要為文字新增粗體和斜體格式。您可以使用上面定義的裝飾器來實現此目的:

@make_bold
@make_italic
def formatted_text(text):
    return text

print(formatted_text("Hello world"))

輸出:

<b><i>Hello world</i></b>

將參數傳遞給裝飾器

您可以將參數括在中來將參數傳遞給裝飾器括號:

def a_decorator_passing_arguments(function_to_decorate):
    def a_wrapper_accepting_arguments(arg1, arg2):
        print("I got args! Look: {0}, {1}".format(arg1, arg2))
        function_to_decorate(arg1, arg2)
    return a_wrapper_accepting_arguments

@a_decorator_passing_arguments
def print_full_name(first_name, last_name):
    print("My name is {0} {1}".format(first_name, last_name))

print_full_name("Peter", "Venkman")

輸出:

I got args! Look: Peter, Venkman
My name is Peter Venkman

結論

透過了解如何建立和連結裝飾器,您可以擴充Python 函數的功能。這種強大的技術可讓您以模組化和可重複使用的方式修改行為、執行檢查並增強程式碼。

以上是如何在 Python 中建立和連結函數裝飾器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn