전역 변수임을 명시하는 키워드
x=20
def func():
global x
print(x) #20
global 키워드를 사용하면 함수 내에서 전역 변수를 가져다 쓸 수 있음을 알 수 있다.
이 경우에는 아예 변수를 생성한다!
def func():
global x
x=30
print(x) # 30
현재 함수 바깥의 지역 변수임을 명시하는 키워드
지역변수 내에서만 사용할 수 있으며,
해당 이름의 변수를 찾을 때 까지 상위 변수를 탐색한다. (단, 어디까지 지역변수의 범위에서)
def a():
x = 100
y = 1000
def b():
x = 200
def c():
nonlocal x
nonlocal y
x = x + 300
y = y + 3000
print(x) # 500
print(y) # 4000
c()
b()
a()
함수 c에서는 nonlocal로 x,y가 선언되어있으니,
바깥쪽에 위치한 변수를 찾는다.
x의 경우 바로 상위 함수 (func b)에서 초기화가 되었으므로 x=200으로 해석된다.
다만 y는 바로 상위 함수에서 찾을 수 없으므로, 그 상위 함수에서 초기화된 y를 해석한다.