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中常见的符号吗?它是什么意思?或者这只是在任务管理器的特殊情况下使用的符号吗?

我尽我最大的努力在谷歌上查找这个,但它是虽然找到@-符号被剥离在我的搜索(太短,特殊字符)。在Stackoverflow上也是如此。

提前感谢您

这是一个装饰器,由PEP 318定义。术语表摘录:

返回另一个函数的函数,通常作为使用@wrapper语法的函数转换应用。classmethod()staticmethod()是装饰器常用的示例。

修饰符语法只是语法糖,下面两个函数定义在语义上是等价的:

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

同样的概念也存在于类中,但在类中不太常用。有关decorator的更多信息,请参阅函数定义和类定义文档。

相关:Python装饰器的一些常见用途是什么?

相关内容

  • 没有找到相关文章

最新更新