Python中的`@`符号代表什么?

5
在Python中,@代表装饰器(Decorator)。例如:@login_required等。
6个回答

31

这是装饰器语法。

一个函数定义可以被一个或多个装饰器表达式包裹。装饰器表达式在定义函数时被评估,在包含函数定义的作用域内进行评估。结果必须是可调用的,它将使用函数对象作为唯一参数调用。返回值绑定到函数名而不是函数对象。多个装饰器以嵌套方式应用。

因此可以这样做:

@login_required
def my_function():
    pass

这只是一种花哨的方式来做这件事:

def my_function():
    pass
my_function = login_required(my_function)

查看更多信息,请访问文档


1

1
这不是问题的答案。 - Nicolas Dumazet

1

装饰器,也称为pie语法。它允许您使用另一个函数“装饰”一个函数。您已经使用staticmethod()和classmethod()进行了装饰。Pie语法使其更易于访问和扩展。


从维基百科上的讨论中,我认为这来自于Java传统命名方式。http://wiki.python.org/moin/PythonDecorators#A1.piedecoratorsyntax - Stefano Borini

1

1

那个具体的装饰器看起来像来自 Django。

通过阅读Django文档,可能会帮助您更好地理解该装饰器。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接