
파이썬을 배우다 보면 '글로벌 변수'와 '로컬 변수'라는 용어를 자주 접하게 됩니다. 저도 방금 접했거든요. 이 개념에 대해서 명확하게 이해하는게 저의 정신건강에 좋을 것 같아 정리해요! 이 글에서 글로벌 변수가 무엇인지, 그리고 그것들이 파이썬에서 어떻게 작동하는지 쉽게 설명해보도록 하겠습니다!!
🚨문제! - 출력 결과물은?
a = 1
def vartest(a):
a = a + 1
vartest(a)
print(a)
저는 처음에 2 가 나올 것이라 생각했지만, 코드를 실행시켜보니 1이 나오더군요.
그 이유가 글로벌 변수와 로컬 변수에 대한 지식이 없어서 햇갈렸었어요...
왜 1이 나오게 됐는지 알아보기에 앞서 글로벌 변수와 로컬 변수에 대한 지식을 쌓아봅시다.
🌍 글로벌 변수(Global Variable)란?
함수 외부에서 정의된 변수입니다. 프로그램 전체에서 접근이 가능하며, 여러 함수에서 사용할 수 있습니다.
x = 10 # x 는 글로벌 변수
def print_global():
print(x) # x는 함수 외부에서 정의된 글로벌 변수
print_global() # 10 출력

🏠 로컬 변수(Local Variable)란?
함수 내부에서 정의된 변수입니다. 해당 함수 내부에서만 사용 가능하며, 함수가 종료되면 사라지며 외부에서는 접근할 수 없습니다.
def my_function():
y = 5 # 로컬 변수
print(y)
my_function() # 5 출력
print(y) # 오류 발생 (y는 함수 내에서만 존재)

⚔️ 글로벌 변수와 로 변수의 충돌
함수 내부에서 글로벌 변수와 동일한 이름의 변수를 정의하면, 그 변수는 로컬 변수가 됩니다. 즉, 함수 내부에서는 로컬 변수가 우선 사용됩니다.
x = 10
def change_variable():
x = 20 # 새로운 로컬 변수 x 생성
print(x)
change_variable() # 20 출력
print(x) # 10 출력 (글로벌 변수 x는 변경되지 않음)
🔧 글로벌 변수 수정하기
함수 내부에서 글로벌 변수를 수정하려면 global 키워드를 사용해야 합니다.
x = 10
def modify_global():
global x # 글로벌 변수 x 사용 선언
x = 20
modify_global()
print(x) # 20 출력 (글로벌 변수 x가 변경됨)
🚨문제 해결하기
# 'a = 1'에 있는 값과 'def vartest(a):'에 있는 값의 a는 다른 값임!
a = 1 # 글로벌 변수
# - (로컬) -
def vartest(a): # 로컬변수(매개변수)
a = a + 1
# - (로컬) -
vartest(a) # 글로벌 변수
print(a) # 글로벌 변수
# 매개변수? : 함수에게 사용하기 위한 변수임
# 함수를 호출을 할 때 넘겨주는 인자로 사용됨
설명
- a = 1은 글로벌 변수입니다.
- def vartest(a):에서의 a는 로컬 변수입니다.
- 이 a는 함수 내부에서만 존재하며 함수 바깥의 a(글로벌 a)와는 다른 변수입니다.
- vartest(a)를 호출해도 함수 내부에서 바뀐 a 값은 함수 밖으로 나오지 않습니다.
- 따라서 print(a)는 여전히 글로벌 변수 a의 값인 1을 출력합니다.
🔧 수정하기
# 해결법 1) return 변수 사용
a = 1
def vartest(a):
a = a+1
return a
a = vartest(a)
print(a)
설명
- vartest 함수는 로컬 변수 a를 수정한 후 그 값을 return합니다.
- 이 return된 값을 다시 글로벌 변수 a에 저장함으로써 글로벌 a가 업데이트됩니다.
# 해결법 2) global 변수 사용
a = 1
def vartest():
global a
a = a+1
vartest()
print(a)
설명
- global로 함수 안에서 글로벌 변수를 직접 수정합니다.
- vartest 함수는 로컬 변수를 만들지 않고 글로벌 a를 직접 수정합니다.
- global a는 vartest 함수 안에서도 글로벌 a를 참조하고 수정하도록 합니다.
'📚 [Archive] CS & AI 스터디 > [STUDY] Python 기초 🐍' 카테고리의 다른 글
| [Python] 인자와 알규먼트의 차이점 이해하기 🐍 (3) | 2024.12.24 |
|---|---|
| [Python] 이터러블에 대해 알아보기! (0) | 2024.12.24 |
| [Python] 자료형과 컬렉션 쉽게 마스터하기(튜플과 시퀀스 자료형) 🌟 (1) | 2024.12.23 |
| [Python] 자료형과 컬렉션 쉽게 마스터하기(딕셔너리) 🌟 (0) | 2024.12.23 |
| [Python] 자료형과 컬렉션 쉽게 마스터하기(리스트) 🌟 (2) | 2024.12.23 |