2014-06-10 49 views
0

我目前正在學習Python和我碰到一個符號我想知道就來了:Python:「@」後跟一個函數 - >它代表什麼?

import taskmanager as tm 

#........ 

@tm.task(str) 
def feat(folder): 
    BLA BLA BLA ... 

的代碼是從https://github.com/kfrancoi/phd-retailreco/blob/master/libraries/plsa/example_plsa.py小摘錄(文件包含使用@標誌幾個符號)。 這是Python中的常用符號,它是什麼意思?或者這僅僅是這個特殊情況下使用taskmanager或者什麼的符號!?

我盡我最大的努力尋找谷歌,但它是儘可能找到@標誌是在我的搜索(太短,特殊字符)剝離出來。在Stackoverflow上同樣發生。

非常感謝你提前

+1

** AS我描述的問題**我可以** **不找一個相關的問題作爲@ -sign被剝離出去,不知道要尋找什麼否則(在這種情況下,對於我來說完全新的裝飾器...) – tim

回答

3

This a decorator,由PEP 318定義。詞彙提取:

返回另一個函數的函數,通常作爲使用@wrapper語法的函數轉換應用。修飾者的常見示例是classmethod()staticmethod()

的修飾語法僅是語法糖,以下兩個函數定義在語義上等價的:存在對類

def f(...): 
    ... 
f = staticmethod(f) 

@staticmethod 
def f(...): 
    ... 

相同的概念,但不太常用的那裏。有關裝飾器的更多信息,請參閱函數定義和類定義的文檔。

相關:What are some common uses for Python decorators?

+0

感謝您的回答。再一次:我真的不明白,人們低估了這個問題。 **正如我在問題中所描述的**我無法找到相關的問題,因爲@ -sign被剝離出來,並且不知道要尋找什麼(否則,在這種情況下,* decorator *對我來說是完全新的...)。謝謝thuogh! – tim

+0

你可以使用* arobase *而不是'@'進行搜索:-) –

+0

哈哈對我來說,確實是一個全新的詞......但是從來沒有想過,你甚至回答了,謝謝! – tim

相關問題