我目前正在学习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上也是如此。
非常感谢您提前
答案 0 :(得分:3)
返回另一个函数的函数,通常使用
@wrapper
语法作为函数转换应用。装饰器的常见示例是classmethod()
和staticmethod()
。装饰器语法只是语法糖,以下两个函数定义在语义上是等价的:
def f(...): ... f = staticmethod(f) @staticmethod def f(...): ...
类存在相同的概念,但在那里不太常用。有关装饰器的更多信息,请参阅有关函数定义和类定义的文档。