我在休息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”作为参数传递给闭包,但我有一堆共享变量,我很好奇为什么会发生这种情况。
那么,为什么会发生这种情况,你能建议一个解决方法吗?谢谢。
编辑:它似乎与函数内部的重新签名有关。
答案 0 :(得分:0)
好的,似乎我无法在之后使用它来分配闭包变量。
在本例中,“print var”在本地“var”赋值之前。
我想念Python 3中的非本地关键字。