全局变量未定义 - Python

6
我有一个全局变量的问题。它返回错误。
search = Search.Search(pattern,b)
NameError: global name 'b' is not defined   

但是我已经定义了这个全局变量。我尝试将它甚至放入搜索函数中。我认为在Windows上没有问题。我正在尝试在Linux / Unix上运行此程序。

您有任何建议如何避免此错误吗?

# -*- coding: utf-8 -*-
from flask import Flask
from flask import request
from flask import render_template


import Search
import B

app = Flask(__name__)

global b

@app.route('/')
def my_form():
    return render_template('my-form.html')

def setup():
    global b
    b = B.B()  

@app.route('/', methods=['POST'])
def search():
    global b
    from time import time

    pattern = request.form['text']
    ...
    se = Search.Search(pattern,b)
    ...
    ...
    ...

app.debug=True
if __name__ == '__main__':
    setup()
    app.run()

你尝试通过将“b”传递到函数中来解决这个问题了吗?通常比使用全局变量更受欢迎。那么“b”是什么?它是一个类吗? - oxrock
是的,它是一个类的对象。我不能这样做,因为函数search没有被显式调用。我不知道如何将b传递给搜索函数。 - Milano
1个回答

15
app = Flask(__name__)

global b
这里的global b语句实际上并没有为您创建变量,您需要自己将某些值分配给它。

这里的global b语句实际上并没有为您创建变量,您需要自己将某些值分配给它。

app = Flask(__name__)

b = None #or whatever you want the starting value to be

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接