파이썬에도 당연스럽게도 전역변수와 지역변수가 있다!
왜 이제야 파이썬에도 있다는걸 알았을까😅
x = 15 # 전역변수 (global variable)
def f():
x = 30 # 지역변수 (local variable)
f()
print(x)
이때 15가 출력된다.
변수의 값에 변화가 없었음을 알 수 있다.
즉 파이썬은 Call By Assignment의 특성을 가지고 있다.
하지만 global 명령어를 사용할 경우 지역변수가 전역변수에 영향을 줄 수 있다.
x = 15 # 전역변수 (global variable)
def f():
global x # 함수의 지역변수 x 가 전역변수 x를 가르키게 된다.
x = 30 # 지역변수 (local variable)
f()
print(x)
x = 20 # 전역변수 (global variable)
def f():
x = 40
def g():
nonlocal x
x = 80
g() # 함수 g를 실행하여 nonlocal이 적용되도록 한다.
print(x) # 함수 f에서의 x값이 출력된다.(함수 g에서 nonlocal 의 영향을 받아 변수가 80으로 변경되었다.)
f()
print(x) # 모든 함수 실행이 끝나고, 변수 x를 출력한다.(출력값은 처음값인 20이다)
선언된 변수가 지역 변수가 아님을 말하는 것
-> 즉 선언된 변수가 있어야 실행가능하다!