关于python:Flask:@app究竟是什么

Flask : What exactly is @app

本问题已经有最佳答案,请猛点这里访问。

我在遵循这个烧瓶教程。我们声明类似于@app.route('/')的路由,但python中没有变量可以包含@字符。我不明白什么是@app,它来自哪里。下面是代码段:

1
2
3
4
5
6
from app import app

@app.route('/')
@app.route('/index')
def index():
    return"Hello, World!"


@告诉python用app.route()中定义的修饰器来修饰函数index()

基本上,修饰器是修改另一个函数行为的函数。作为一个玩具的例子,考虑一下这个。

1
2
3
4
5
6
7
8
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)。

这是一个很好的循序渐进的过程。装饰师说明。


它是一个装饰工。当用@app.route('/')修饰(函数)时,调用index()与调用app.route('/')(index)()相同。

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