반응형
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 |
반응형
'파이썬 (Python) > 파이썬 키워드' 카테고리의 다른 글
[파이썬] 디버깅을 유용하게 해주는 assert 키워드 (0) | 2021.06.29 |
---|---|
[파이썬] 변수 개체를 삭제하는 del 키워드 (0) | 2021.06.29 |
[파이썬] 로컬에서 전역변수를 사용하기 위한 global 키워드 (0) | 2021.06.29 |
[파이썬] pass 키워드 사용법 (0) | 2021.06.29 |
[파이썬] 파이썬에서 함수 정의 방법 - 1 (0) | 2021.06.29 |