在Python中,裝飾器是一種特殊的函數,它可以用來修改其他函數的行為。裝飾器通過接收一個函數作為參數,然后返回一個新的函數,這個新函數通常會包含原始函數的功能,并在此基礎上添加或修改一些行為。
要實現功能擴展,你可以使用裝飾器來包裝原始函數,然后在新的函數中調用原始函數,并在適當的時機添加額外的功能。下面是一個簡單的示例:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
在這個例子中,我們定義了一個名為my_decorator
的裝飾器。這個裝飾器接收一個函數func
作為參數,然后定義了一個名為wrapper
的新函數。在wrapper
函數中,我們首先打印一條消息,然后調用原始函數func
,最后再打印一條消息。最后,裝飾器返回wrapper
函數。
我們使用@my_decorator
語法將裝飾器應用于名為say_hello
的函數。這實際上是將say_hello
函數作為參數傳遞給my_decorator
,并將返回的wrapper
函數賦值給say_hello
。因此,當我們調用say_hello
時,實際上是在調用wrapper
函數,從而實現了功能擴展。
輸出結果如下:
Something is happening before the function is called.
Hello!
Something is happening after the function is called.
這個簡單的示例展示了如何使用裝飾器來實現功能擴展。你可以根據需要修改wrapper
函數,以添加更多的功能或修改原始函數的行為。