以@开头的python行

可能重复:
了解Python装饰器

我正在阅读一个Django应用程序的源代码,我发现这一点

@login_required
def activities(request = None,
            project_id = 0,
            task_id = 0,
            ...

以@开头的行是什么意思?


请检查Python装饰器解释。 它有一个惊人的答案,将解释一切。


这是一个装饰者。 它所做的基本上是包装这个功能。 它与此代码等效:

def activities(request = None,
            project_id = 0,
            task_id = 0,
            ...
activities = login_required(activities)

它用于检查函数参数(在本例中为request.session ),修改参数(它可能会给函数以外的其他参数),也可能是其他一些东西。


它是一个装饰器,它是Python中一种特殊类型的函数(或类,在某些情况下)可以修改另一个函数的行为。 看到这篇文章。

@decorator
def my_func():
    pass

实际上只是一种特殊的语法

def my_func():
    pass
my_func = decorator(my_func)
链接地址: http://www.djcxy.com/p/23797.html

上一篇: python lines that start with @

下一篇: Python decorators just syntactic sugar?