2015-01-30 5 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 
관련 문제