티스토리 뷰
- mutable 자료형을 가진 이상, 지역변수가 전역 변수에 영향을 줄 수 없다.
- 그러나
global
명령어 사용으로, 지역변수가 전역 변수에 영향을 줄 수 있다.
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 = 30 # 지역변수 (local variable)
f()
print(x) # 30
nonlocal
명령어
nonlocal
: 지역변수가 아님을 선언nonlocal
이 사용된 함수 바로 한단계 바깥쪽에 위치한 변수와 바인딩을 할 수 있다.
x = 20 # 전역변수 (global variable)
def f():
x = 40
def g():
global x
x = 80
g() # 함수 g를 실행하여 nonlocal이 적용되도록 한다.
print(x) # 함수 f에서의 값이 출력된다. nonlocal이 적용되어 80 출력
f()
print(x) # 모든 함수 실행이 끝나고 x를 출력. 처음값인 20이 출력된다.
댓글