WeniVooks

검색

견고한 파이썬

nonlocal

1. nonlocal이란?

nonlocal은 파이썬의 키워드 중 하나로, 중첩 함수 내부에서 바깥 함수의 변수를 참조할 수 있게 합니다. nonlocal은 주로 클로저(closure)에서 변수의 값을 변경하고자 할 때 사용합니다.

2. nonlocal 사용 예시

아래 코드는 함수가 3개 중첩되어 있습니다. fff 함수에서 만약 전역 변수 a를 참조하고 싶다면 global a를, 자신을 감싸고 있는 바로 위에 함수를 참조하고 싶다면 nonlocal a를 사용합니다.

# nonlocal a = 10 def f(): a = 100 print(f'f a: {a}') def ff(): a = 1000 print(f'ff a: {a}') def fff(): nonlocal a # global a로 변경해보세요. a = 100 print(f'fff a: {a}') fff() print(f'ff a: {a}') ff() f() print(f'global a: {a}')

4. 주의사항

nonlocal을 사용할 때 참조하는 변수가 실제로 바깥 함수에 존재하는지 반드시 확인해야 합니다. 그렇지 않으면 SyntaxError가 발생합니다.

{"packages":["numpy","pandas","matplotlib","lxml"]}
13.9 이터레이터와 제너레이터13.11 연습문제