더북(TheBook)

모든 지역에서 사용하는 전역변수

지역변수와 반대되는 개념으로 전역변수가 있습니다. 이름에서도 알 수 있듯이 전역변수는 프로그램 전체(전역)에서 사용되는 변수입니다. 따라서 전역변수는 사용자 정의 함수 내부가 아니라 외부에 정의된 변수입니다.

다음 코드를 봅시다. func1() 함수가 실행될 때마다 a 변수는 2만큼 증가하고, b 변수는 2배로 증가합니다. 이 코드에서 ab는 지역변수일까요? 전역변수일까요?

def func1():
    a += 2
    b *= 2
    print(a, b)

a, b = 5, 10 # a, b 변수 정의
func1()

이 코드에는 지역변수가 없습니다. func1() 함수 내부에 정의한 변수가 없기 때문이죠. 하지만 전역변수는 2개 있습니다. 바로 ab입니다. ab는 함수 외부의 프로그램이 진행되는 부분에 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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.