Flask 路由函数内的局部变量闭包访问

Local variable closure access inside a flask routed function

我正在休息时使用 Flask 0.10 和 Python 2.7 api。

我有一个问题,我无法访问在我的函数中的闭包之前声明的只读变量。

@app.route 装饰器似乎以某种方式隐藏了变量,因为它在正常的 Python 函数中工作。

@app.route('/orders', methods=['POST'])
@app.route('/orders/<int:order_id>', methods=['GET'])
def order(order_id=None):
    var = 1

    def post():
        print var
        var = None

    def get():
        print var
        var = None

    if request.method == 'GET':
        return get()
    else:
        return post()

无论我使用 GET 还是 POST,我都会得到: UnboundLocalError:赋值前引用的局部变量'var'

我知道我可以将 "var" 作为参数传递给闭包,但我有一堆共享变量,我很好奇为什么会发生这种情况。

那么,为什么会发生这种情况,您能否提出解决方法?谢谢。

编辑:好像跟函数内部的赋值有关

好的,看来我无法在使用它之后分配一个闭包变量。

在本例中 "print var" 在本地 "var" 分配之前。

我想念 Python 3.

中的非本地关键字