我無法理解裝飾器的概念,所以基本上,如果我理解正確,裝飾器用於擴展函數的行爲,而無需修改函數代碼。基本例如:帶有參數的Python裝飾器
我有裝飾功能,這需要作爲參數,另一個函數,然後改變指定的參數函數的功能:
def decorator(f):
def wrapper(*args):
return "Hello " + str(f(*args))
return wrapper
在這裏,我有我想裝飾功能:
@decorator
def text (txt):
'''function that returns the txt argument'''
return txt
所以,如果我理解正確的話,實際發生的 「幕後黑手」 是:
d=decorator(text)
d('some argument')
我的問題是,在這種情況下會發生什麼,當我們在裝飾三個嵌套函數:
def my_function(argument):
def decorator(f):
def wrapper(*args):
return "Hello " +str(argument)+ str(f(*args))
return wrapper
return decorator
@my_function("Name ")
def text(txt):
return txt
因爲功能是真棒,我可以在裝飾過的說法,我不明白到底發生了什麼背後這一呼籲:
@my_function("Name ")
謝謝
[python裝飾器與參數]的可能重複(http://stackoverflow.com/questions/5929107/python-decorators-with-parameters) – mkrieger1