2014-04-17 2 views
-1

이름 오류가 발생하는 경우 ... 나는파이썬 : 정의의 문은 내가 더 큰 코드의 작은 문제가

graph(single) 

I를 입력 한 다음 예

def graph(form): 
    if form == single: 
     print 1 
    if form == multi: 
     print 2 

에서 재현 할 수 get

--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-146-c730e3c6bbf1> in <module>() 
----> 1 graph(single) 

<ipython-input-143-cf1ff0a5e57e> in graph(form) 
     5  if form == single: 
     6   print 1 
----> 7  if form == multi: 
     8   print 2 
     9 

NameError: global name 'multi' is not defined 

1 

내 실수는 어디에서 볼 수 있습니까?

+2

정확하게'single'과'multi'는 무엇입니까? 그 변수들은 무엇을 참조합니까? – gravetii

+0

은 단일 및 다중 변수 또는 상수입니까? 아니면 그들이 텍스트 값을 의미하는 경우 " – gts

+0

그냥 이름 .... 내 진짜 스크립트와 함께 하나의 폴더에 하나의 데이터 세트 또는 모든 데이터 세트를 음모하려는 결정 싶어요. – FrankTheTank

답변

3

singlemulti은 아무런 가치가 없습니다. 그것들은 당신의 기능이나 전 세계적으로 정의되어 있지 않습니다.

함수가 작동하기 전에 의미를 정의해야합니다.

그냥 단어 인 경우 single이 아닌 "single"으로 묶어야합니다. 중 하나를 잘못 입력, 위의

NameError: global name 'multi' is not defined 

어딘가에을하거나 multi 변수를 정의하는 것을 잊었다 :

+0

첫 번째'if' 문처럼 호출이 성공하기 때문에'single'은 분명히 값을 가지고 있습니다. – chepner

+0

'def graph (form) : if form == 'single': print 1 if form == 'multi': print 2' 이 문제를 해결했습니다. 이제 그래프 (다중) 또는 그래프 (단일)로 if 문에 액세스 할 수 있습니다. – FrankTheTank

1

오류가 문제가있는 곳을 말하고있다. 메서드 외부에서 정의 된 전역 변수 인 경우 메서드 상단에 global statement으로 표시해야합니다. 글로벌 사용의 좋은 예가 here입니다.

관련 문제