본문 바로가기

카테고리 없음

파이썬 변수의 사용 범위: 전역 변수(global variables), 지역 변수(local variables)

파이썬에서 변수는 이름 공간(namespace)에서 관리됩니다. 이름 공간은 변수의 이름을 정의해 둔 공간으로 크게 전역 이름 공간과 지역 이름 공간으로 나누어집니다.

 

전역 변수(global variables)

전역 변수는 함수 밖의 전역 공간에서 선언된 변수입니다. 따라서 함수 내부를 포함하여 스크립트 어디서든 접근할 수 있습니다. 

 

전역 변수 만들기

x = "global"

def do():
    print("함수 내부의 x:", x)

do()
print("전역 공간의 x:", x)

"""
함수 내부의 x: global
전역 공간의 x: global
"""

 

이번에는 함수 내부에서 전역 변수 x의 값을 바꿔보겠습니다.

x = "global"

def do():
    x = x * 3
    print(x)

do()

"""
UnboundLocalError: local variable 'x' referenced before assignment
"""

에러가 발생했습니다. 선언되지 않은 지역 변수 x를 사용할 수 없다는 뜻입니다. 여기서 알 수 있는 점은 파이썬은 함수 안에 x를 지역 변수로 다루고 있다는 것입니다. 때문에 에러가 발생하게 됐습니다.

 

함수 안에서 전역 변수를 사용하고 싶다면 global 키워드를 사용해야 합니다. 이는 뒤에서 다시 다루겠습니다.

 

 

지역 변수(local variables)

지역 변수는 함수 안에서 선언된 변수로 함수 내부에서만 사용이 가능합니다.

 

지역 변수 만들기

def do():
    y = 'local'
    print("함수 내부의 y:", y)

do()

"""
함수 내부의 y: local
"""

함수의 출력 결과로 변수 y의 값이 잘 들어간 것을 볼 수 있습니다.

 

이번에는 함수 밖에서 지역 변수를 불러보겠습니다.

def do():
    y = 'local'
    print("함수 내부의 y:", y)

print(y)

"""
NameError: name 'y' is not defined
"""

네임 에러가 발생했습니다. 지역 변수 y를 함수 내부에서 선언된 변수이기 때문에 함수 밖에서는 읽을 수가 없기 때문입니다.

 

 

global 키워드 사용하기

global 키워드를 이용하면 함수 안에서도 전역 변수의 값을 바꿀 수 있습니다. 

x = "global"

def do():
    global x
    x = x * 3
    print(x)

do()

"""
globalglobalglobal
"""

 

 

지금까지의 내용을 표로 정리하면 다음과 같습니다. 

 

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.