모든 지역에서 사용하는 전역변수
지역변수와 반대되는 개념으로 전역변수가 있습니다. 이름에서도 알 수 있듯이 전역변수는 프로그램 전체(전역)에서 사용되는 변수입니다. 따라서 전역변수는 사용자 정의 함수 내부가 아니라 외부에 정의된 변수입니다.
다음 코드를 봅시다. func1() 함수가 실행될 때마다 a 변수는 2만큼 증가하고, b 변수는 2배로 증가합니다. 이 코드에서 a와 b는 지역변수일까요? 전역변수일까요?
def func1():
a += 2
b *= 2
print(a, b)
a, b = 5, 10 # a, b 변수 정의
func1()
이 코드에는 지역변수가 없습니다. func1() 함수 내부에 정의한 변수가 없기 때문이죠. 하지만 전역변수는 2개 있습니다. 바로 a와 b입니다. a와 b는 함수 외부의 프로그램이 진행되는 부분에 a, b = 5, 10으로 정의되어 있습니다. 이 코드를 실행하면 어떻게 될까요? 전역변수 a에 2를 더하고 b에 2를 곱할까요? 코드를 실행해 봅시다.
실행결과
6 a, b = 5, 10
----> 7 func1()
1 def func1():
----> 2 a += 2
UnboundLocalError: local variable 'a' referenced before assignment