전역 변수와 지역변수
전역 변수(global variable)
함수를 포함해 스크립트 전체에서 접근할 수 있는 변수.
전역 변수에 접근할 수 있는 범위를 전역 변수(global scope)라고 한다.
x = 10 # 전역 변수
def foo():
print(x) # 전역 변수 출력
foo()
print(x) # 전역 변수 출력
지역 변수(local variable)
변수를 선언한 블록 내에서만 접근할 수 있는 변수.
지역 변수를 접근할 수 있는 범위를 지역 범위(local scope)라고 한다.
def foo():
x = 10 # 지역 변수
print(x) # 지역 변수 출력
foo()
print(x) # 지역 변수 출력
foo() 밖에서 변수 x에 접근하려고 하면 오류가 발생한다.
global 키워드
전역 변수가 있을 때 함수 안에서 그 전역 변수의 값을 변경하려고 아래와 같은 코드를 실행했다. 의도대로 동작할까?
x = 10 # 전역 변수
def foo():
x = 20
print(x)
foo()
print(x)
이름이 동일한 탓에 foo 내의 x가 전역 변수를 사용하는 것처럼 보이지만, 실제로는 foo 함수 안에서 값이 20인 지역변수 x를 선언한 것이다. 두 변수는 다른 변수이다.
함수 안에서 전역 변수의 값을 변경하려면 global 키워드를 사용해야 한다.
x = 10 # 전역 변수
def foo():
global x
x = 20
print(x)
foo()
print(x) # 지역 변수 출력
전역 변수가 없을 때 함수 안에서 global 키워드를 사용하면 전역 변수를 선언하는 것과 같다.
def foo():
global x
x = 20
print(x)
foo()
print(x) # 지역 변수 출력
참고 문서
https://dojang.io/mod/page/view.php?id=2364