Python:“@”后跟一个函数 -> 它代表啥? [复制]

Posted

技术标签:

【中文标题】Python:“@”后跟一个函数 -> 它代表啥? [复制]【英文标题】:Python: "@" followed by a function -> What does it stand for? [duplicate]Python:“@”后跟一个函数 -> 它代表什么? [复制] 【发布时间】:2014-07-31 03:45:57 【问题描述】:

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

我已尽力在 google 上查找此内容,但由于 @-符号在我的搜索中被删除(太短,特殊字符),它仍然可以找到。 *** 上也是如此。

非常感谢您

【问题讨论】:

正如我在问题中描述的那样我可以找到一个相关的问题,因为@符号被剥离并且不知道该做什么寻找其他方式(在这种情况下,对于我来说是全新的装饰器......) 【参考方案1】:

This a decorator,由PEP 318 定义。词汇表摘录:

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

装饰器语法只是语法糖,以下两个函数定义在语义上是等价的:

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

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

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

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

【讨论】:

感谢您的回答。再说一遍:我真的不明白人们会否决这个问题。 正如我在问题中描述的那样我找不到相关的问题,因为 @-sign 已被删除并且不知道要寻找什么(在这种情况下,对于 decorator i> 这对我来说是全新的......)。谢谢你! 您可以使用 arobase 而不是 @ 进行搜索 :-) 哈哈当然,对我来说完全是一个新词……但没关系,你甚至回答了,谢谢!

以上是关于Python:“@”后跟一个函数 -> 它代表啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

函数模板参数包后跟模板参数和特化

Python基础学习

Python函数基础

Lesson 1-2

python-- 函数

Python基础-03.Python基础知识