2015-01-30 2 views
1

У меня проблема с глобальной переменной. Он возвращает ошибкуГлобальная переменная не определена - Python

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() 
+0

Вы пытались обойти это, передав функции «b»? В любом случае, как правило, предпочтение отдается глобальному использованию. Что такое b? Это класс? – oxrock

+0

Да, это объект класса. Я не могу этого сделать, потому что поиск функции явно не вызван. Я не знаю, как передать b функции поиска. –

ответ

6
app = Flask(__name__) 

global b 

global b заявление здесь не создает переменную для вас. Вам нужно что-то присваивать себе.

app = Flask(__name__) 

b = None #or whatever you want the starting value to be 
Смежные вопросы