파이썬에서는 하위 스코프에서 상위 스코프의 변수를 영구 변경 가능
📍Global
- 전역 변수를 하위 스코프에서 변경할 때 사용
- 예시
a = "outer"
print(a) # outer
def print_out():
global a # a 를 전역 변수로 사용한다고 선언
a = "inner" # a 변경
print(a)
print_out() # inner
print(a) # inner
📍nonlocal
- 중첩 함수 내에서 지역 변수로 사용하지 않을 때 사용
(상위 스코프의 비전역 변수를 탐색)
def print_out():
num = 0
def change_num():
nonlocal num
num = 100
print(num)
change_num() # 100
print(num) # 100
print_out() # 원래는 0 이어야 하는데 100 출력