【问题标题】:Flask : What exactly is @app [duplicate]Flask:@app 到底是什么 [重复]
【发布时间】:2016-05-21 23:18:14
【问题描述】:

我正在关注this Flask 教程。我们声明像 @app.route('/') 这样的路由,但是 python 中的变量不能包含 @ 字符。
我很困惑@app 是什么以及它来自哪里。这是代码 sn-p :

from app import app

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

【问题讨论】:

    标签: python flask syntax


    【解决方案1】:

    @ 告诉 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 是一个很好的逐步说明。装饰器的解释。

    【讨论】:

    • 这个概念也被称为闭包。这是向函数添加更多功能而无需创建类的好方法。
    • @m1yag1 通过识别 Python 的装饰器,你让我终于明白了闭包的用处,谢谢 ;)
    • 为什么第3行是return func(2) ** 2,应该是return func(x) ** 2吗?
    【解决方案2】:

    这是一个decorator。当被@app.route('/')(这是一个函数)修饰时,调用index()变得和调用app.route('/')(index)()一样。

    这里是another link,可以在 python wiki 中解释它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2023-03-22
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多