Python的裝飾器是一種用于改變函數行為的強大功能。它允許您在不改變函數本身的情況下,通過添加額外功能來擴展它,提高其功能性和可維護性。
#裝飾器函數 def my_decorator(func): def wrapper(): print("這是添加的額外功能") func() return wrapper #被裝飾函數 def greet(): print("你好世界!") #裝飾后函數 greet = my_decorator(greet) #調用裝飾后函數 greet()
在上面這個例子中,我們定義了一個裝飾器函數my_decorator
,它接受一個函數func
作為參數并返回一個新函數wrapper
。在wrapper
函數中,我們添加了額外功能并在最后調用func()
函數。
接下來我們定義了一個普通函數greet
,并將其傳遞給my_decorator
函數進行裝飾。因為裝飾器返回一個新函數,所以我們將裝飾后的函數wrapper
賦值給greet
。
最后,我們調用裝飾后的函數greet()
,它添加了額外功能并輸出了"你好世界!"。
除了像上面那樣手動裝飾函數之外,Python還提供了語法糖來使裝飾器更易用。例如:
#語法糖裝飾器 @my_decorator def greet(): print("你好世界!") #調用裝飾后函數 greet()
在這個例子中,我們使用@my_decorator
語法糖來裝飾greet
函數。這意味著greet
函數將在定義時自動傳遞給my_decorator
函數進行裝飾,而不需要手動賦值。
通過使用Python的裝飾器,您可以專注于函數的核心功能并在不影響其行為的情況下擴展其功能,這有助于提高代碼的可讀性和可維護性。