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.
中的非本地关键字
我正在休息时使用 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.
中的非本地关键字