以@开头的Python行
可能重复的问题:
理解Python装饰器
我在阅读一个Django应用的源代码时发现了这个
@login_required
def activities(request = None,\
project_id = 0,\
task_id = 0,\
...
以@开头的那一行是什么意思呢?
4 个回答
4
这是一个装饰器,它是一种特殊的函数(在某些情况下也可以是类),用来改变另一个函数的行为。想了解更多,可以看看这篇文章。
@decorator
def my_func():
pass
其实这只是一个特殊的语法,用来表示
def my_func():
pass
my_func = decorator(my_func)
5
这是一种装饰器。它的作用就是把一个函数包裹起来。可以理解为下面这段代码:
def activities(request = None,\
project_id = 0,\
task_id = 0,\
...
activities = login_required(activities)
它主要用来检查函数的参数(在这个例子中是 request.session
),还可以修改参数(也就是说,它可能会给函数传递不同于原本的参数),还有可能有其他一些功能。
3
请查看一下 Python 装饰器的解释。里面有个很棒的回答,可以把所有内容都讲清楚。