2009-06-27 150 views

回答

30

它是修飾語法。

函數定義可以被一個或多個裝飾器表達式包裝。在包含函數定義的作用域中定義函數時,對裝飾器表達式進行求值。結果必須是一個可調用的函數,它是以函數對象作爲唯一參數來調用的。返回的值綁定到函數名稱而不是函數對象。多個裝飾器以嵌套的方式應用。

所以做這樣的事情:

@login_required 
def my_function(): 
    pass 

就是這樣做的一個奇特的方式:

def my_function(): 
    pass 
my_function = login_required(my_function) 

如需更多信息,請查看the documentation

1

裝飾者,也被稱爲pie syntax。它允許你用另一個功能「裝飾」一個功能。您已經使用staticmethod()和classmethod()進行了裝飾。餡餅語法使訪問和擴展變得更加容易。

+0

來自維基,在關於選擇的討論中。我認爲它來自java傳統命名 http://wiki.python.org/moin/PythonDecorators#A1.piedecorators語言 – 2009-06-28 00:31:38

1

這個特定的裝飾看起來像來自Django。

通過閱讀關於該裝飾器的Django documentation,可以幫助您更好地理解。