我正在关注this Flask 教程。我们声明类似@app.route('/')
的路由,但python中的变量不能包含@
个字符。
我很困惑@app
是什么以及它来自哪里。这是代码段:
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
答案 0 :(得分:12)
@
告诉Python使用index()
中定义的装饰器来装饰函数app.route()
。
基本上,装饰器是一个修改另一个函数行为的函数。作为一个玩具示例,请考虑这一点。
def square(func):
def inner(x):
return func(x) ** 2
return inner
@square
def dbl(x):
return x * 2
现在 - 调用dbl(10)
将不会返回20
,而是400
(20**2
)。
This是一个很好的循序渐进。装饰者的解释。
答案 1 :(得分:11)
这是decorator。当由@app.route('/')
(这是一个函数)修饰时,调用index()
变得与调用app.route('/')(index)()
相同。
这是another link可以在python wiki中解释它。