我有一个功能和烧瓶路径设置。但是,当我转到“简单页”时,出现错误“ NameError:全局名称'aaa'未定义”。为什么没有任何对象传递给testfun?这是由于app.route装饰器还是烧瓶引起的?我可以将所有对象传递给testfun吗?我的实际代码复杂得多,需要传递更多的对象,但是创建此简化方案只是为了说明我的问题。
def testfun():
b=aaa
@app.route("/simplepage/", methods=['GET'])
def simplepage():
aaa=1
testfun()
return flask.render_template('page.html')
最佳答案
基本上发生了什么事
def t():
print aaa
def s():
aaa = "hi"
t()
s()
Python首先在本地范围内查找
aaa
,然后在所有包装函数范围内查找,然后在全局范围内查找,最后在内置函数中查找。由于s
函数作用域不是所有这些事情,因此python会引发未定义的错误,因为它找不到aaa
。一种解决方案是将
aaa
声明为全局。def t():
print aaa
def s():
global aaa
aaa = "hi"
t()
s()
关于python - 对象未传递到 flask 路由中的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16050301/