2011-03-18 4 views
1

아마 내 커피는 아침에 충분히 강한 아니지만,이 문제가 지금 나를 혼란 : (. 그것이 func2()a = 'bar'을 오류를하지 제기 년대 print a 문의합니다)함수의 컨텍스트에서 전역 변수의 값을 설정하면 UnboundLocalError가 발생합니까?

>>> a = 'foo' 
>>> def func1(): 
... print a 
... 
>>> def func2(): 
... print a 
... a = 'bar' 
... 
>>> func1() 
foo 
>>> func2() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 2, in func2 
UnboundLocalError: local variable 'a' referenced before assignment 

누군가 여기서 나 한테 설명 할 수 있니?

+0

가능한 복제본 [Python 범위] (http://stackoverflow.com/questions/146359/python-scope) –

답변

2

afunc2 안에 설정되어 있기 때문에 파이썬은 로컬 변수라고 가정합니다. print 문 앞에 global a 선언을 넣어 :

def func2(): 
    global a 
    print a 
    a = 'bar' 

this question about Python scoping rules를 참조하십시오.

+0

고마워, 그게 다야. 파이썬에서 전역 변수를 사용하는 경우가 거의 없기 때문에 나는이 문제를 우연히 발견하지 못했습니다. – jsdalton

관련 문제