烧瓶布线功能内的局部变量闭合访问

时间:2015-02-25 18:24:17

标签: python flask

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

我遇到了问题,我无法访问函数闭包之前声明的只读变量。

似乎@ 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”作为参数传递给闭包,但我有一堆共享变量,我很好奇为什么会发生这种情况。

那么,为什么会发生这种情况,你能建议一个解决方法吗?谢谢。

编辑:它似乎与函数内部的重新签名有关。

1 个答案:

答案 0 :(得分:0)

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

在本例中,“print var”在本地“var”赋值之前。

我想念Python 3中的非本地关键字。