Python:“@”后跟一个函数 - >它代表什么?

时间:2014-06-10 11:37:32

标签: python special-characters keyword semantics notation

我目前正在学习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中的常见符号,它是什么意思?或者这只是在这个特殊情况下用于任务管理器的符号或者什么!?

我在谷歌上尽了最大努力,但发现@ -sign在我的搜索中被删除了(太短,特殊字符)。在Stackoverflow上也是如此。

非常感谢您提前

1 个答案:

答案 0 :(得分: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?