Python中的裝飾器是一種特殊的函數,它可以在原有函數的基礎上添加額外的功能。使用裝飾器的方式可以優雅地解決一些與業務邏輯無關的問題,無需修改原函數代碼。Python的裝飾器是Python語言中的一個重要特性。
def decorator_func(func): def wrapper_func(): print('before func') func() print('after func') return wrapper_func @decorator_func def my_func(): print('My function') my_func()
在上面的代碼中,decorator_func是一個裝飾器函數。當裝飾器被應用到another_func函數上時,會調用wrapper_func函數。wrapper_func函數會在調用原有函數之前和之后分別輸出“before func”和“after func”。
def repeat(num): def actual_decorator(func): def wrapper(*args, **kwargs): for i in range(num): func(*args, **kwargs) return wrapper return actual_decorator @repeat(num=3) def say_hello(name): print(f'Hello {name}') say_hello('Tony')
在上面的代碼中,repeat裝飾器是一個有參數的裝飾器。裝飾say_hello函數時,重復函數調用的次數是通過repeat的參數來控制的。使用裝飾器時,如果需要參數,則可以寫一個嵌套函數actual_decorator來完成。
在Python中使用裝飾器可以簡化代碼并解決重復的邏輯問題。隨著對Python的了解和使用,將會對裝飾器的理解和應用更加深入和靈活。