我正在学习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装饰器的一些常见用途是什么?