3
A
回答
30
它是修飾語法。
函數定義可以被一個或多個裝飾器表達式包裝。在包含函數定義的作用域中定義函數時,對裝飾器表達式進行求值。結果必須是一個可調用的函數,它是以函數對象作爲唯一參數來調用的。返回的值綁定到函數名稱而不是函數對象。多個裝飾器以嵌套的方式應用。
所以做這樣的事情:
@login_required
def my_function():
pass
就是這樣做的一個奇特的方式:
def my_function():
pass
my_function = login_required(my_function)
如需更多信息,請查看the documentation。
1
1
裝飾者,也被稱爲pie syntax。它允許你用另一個功能「裝飾」一個功能。您已經使用staticmethod()和classmethod()進行了裝飾。餡餅語法使訪問和擴展變得更加容易。
+0
來自維基,在關於選擇的討論中。我認爲它來自java傳統命名 http://wiki.python.org/moin/PythonDecorators#A1.piedecorators語言 – 2009-06-28 00:31:38
2
如果你問這種類型的問題,你可能會對其他hidden features of Python感興趣。
0
1
這個特定的裝飾看起來像來自Django。
通過閱讀關於該裝飾器的Django documentation,可以幫助您更好地理解。
這不是問題的答案。 – NicDumZ 2009-06-28 00:35:57