Flask:@app究竟是什么

Sat*_*wik 5 python syntax flask

我正在关注这个 Flask教程.我们声明路由@app.route('/'),但python中没有变量可以包含@字符.
我很困惑@app它的来源和来源.这是代码片段:

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"
Run Code Online (Sandbox Code Playgroud)

Chi*_*chi 12

@告诉Python来装饰功能index()装饰中定义app.route().

基本上,装饰器是一个修改另一个函数行为的函数.作为一个玩具示例,请考虑这一点.

def square(func):
    def inner(x):
        return func(x) ** 2
    return inner

@square
def dbl(x):
    return x * 2 
Run Code Online (Sandbox Code Playgroud)

现在 - 调用dbl(10)将不会返回20,正如您所期望的那样,而不是400(20**2).

是一个很好的一步一步.装饰者的解释.

  • 这个概念也称为闭包。这是一种向函数添加更多功能而无需创建类的好方法。 (2认同)

Jul*_*enD 11

这是一个装饰.当装饰@app.route('/')(这是一个函数)时,调用index()变得与调用相同app.route('/')(index)().

这是另一个可以解释它的链接,在python wiki中.