nonlocal 문은 전역변수을 제외한 바로 위의 함수에서 사용되는 변수와 바인딩되어 참조하도록 합니다.
즉, nonlocal 문으로 선언되는
변수는 전역변수와 바인딩을 할 수 없습니다.
a = 10 def test1 ():
nonlocal a
a = 100
print (a) test1() print (a) |
위의 코드를 실행하면 아래와 같이 에러가 발생됨을 알 수 있습니다.
File "nonlocal_test1.py",
line 4
nonlocal a
^ SyntaxError: no binding for nonlocal
'a' found |
사용된 함수 바로 한단계 바깥쪽에 위치한 변수와 바인딩을 할 수 있도록 코드를
수정하면
a = 10 def test1 ():
a = 100
def test2 ():
nonlocal a # test1() 함수에
영향을 미침
a = 1000
test2 ()
print (a) test1 () print (a) |
Test2() 함수에서 nonlocal을 선언했으므로 test1() 함수의 a 변수의 값이 100에서 1000으로 변경됩니다.
실제 실행예를 보면, test2() 함수의
값이 1000이 출력되고, 나중에 전역변수의 값인 10이 출력됨을 알 수 있습니다.
1000 10 |
댓글 없음:
댓글 쓰기