我有一个功能和烧瓶路径设置。但是,当我转到“简单页”时,出现错误“ 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/

10-12 21:25