지역변수와 전역변수
함수 안에서 만든 변수와 함수 밖에서 만든 변수는 사용할 수 있는 범위가 다릅니다. 지역변수와 전역변수가 무엇인지, 왜 나눠서 쓰는지, 그리고 같은 이름을 써도 서로 다른 변수가 되는 이유까지 정리해요.
요즘은 고등학교에서도 코딩을 정규 과목으로 가르치는 시대입니다. 전공자가 아니어도 바이브 코딩(Vibe Coding)이나 생성형 AI(Generative AI)를 활용하면 누구나 그럴듯한 코드 결과물을 만들어낼 수 있게 되었죠.
개발 언어를 접하는, 전공자가 아닌 일반인 입문자가 많아진 것입니다.
이 시리즈는 글쓴이가 실제로 일반인, 고등학생 등 비전공자·입문자에게 파이썬을 가르치면서 정리한 내용들을 교재 형식으로 엮은 글입니다.최대한 쉽고 친절하게 설명하면서도, 컴퓨터와 프로그래밍 언어에 대한 기초 이론까지 함께 짚고 넘어가려 합니다.
고등학생, 비전공자, 완전 입문자도 따라올 수 있게끔 만든 시리즈이고, 실제 과외 수업 자료를 바탕으로 만들어서 학교 시험처럼 개념 확인 문제도 그대로 들어있어요.
중간중간 빈칸 채우기랑 학교 시험 유형 문제가 나오는데, 정답은 바로 안 보이게 접어뒀습니다. 먼저 스스로 생각해본 다음 "보기"를 눌러서 확인해보세요.

함수 밖에서 만들 수도 있고, 함수 안에서 만들 수도 있습니다. 이 둘은 사용할 수 있는 범위가 다릅니다.
def hello():
print(name)
hello()
전역변수는 프로그램 어디에서나 사용할 수 있습니다. 함수 안에서도 문제없이 꺼내 쓸 수 있어요.
age = 17
print(age)
hello()
여기서 print(age)를 함수 밖에서 하면 어떻게 될까요?
age = 17
hello()
print(age)
왜 오류가 날까요? age는 함수 안에서만 존재하는 변수이기 때문입니다. 함수가 실행을 마치고 나면, 그 안에서 만들어진 지역변수는 사라집니다.
전역변수는 교실 전체에 놓인 바구니라서 누구나(어떤 함수든) 꺼내 쓸 수 있습니다. 지역변수는 함수라는 자기 방 안에만 놓인 바구니라서, 그 함수를 벗어나면 존재 자체가 사라져요. 방 밖에서 그 바구니를 찾으면 "그런 바구니 없다"는 뜻의 NameError가 나는 것입니다.
def hello():
name = "영희"
print(name)
hello()
print(name)
철수
함수 안의 name과 함수 밖의 name은 이름만 같을 뿐 완전히 다른 변수입니다. hello() 안에서 name = "영희"라고 해도, 함수 밖의 name("철수")은 전혀 바뀌지 않아요. 함수는 자기만의 독립된 방을 가지고 있어서, 그 안에서 무슨 이름을 쓰든 바깥 방과는 섞이지 않습니다. 단, 같은 방 안에서는 하나의 이름으로 하나의 변수만 만들 수 있습니다.
result = a + b
return result
여기서 result는 계산할 때만 잠깐 필요한 변수입니다. 함수가 끝나면 자동으로 사라지고, 굳이 프로그램 전체에서 계속 남아있을 필요가 없어요. 이렇게 그 함수 안에서만 쓰고 버릴 값이라면 지역변수로 만드는 게 자연스럽습니다.
def student():
print(school)
def teacher():
print(school)
student()
teacher()
한빛고
여러 함수에서 같이 사용할 값이라면 전역변수가 편리합니다. student()와 teacher() 둘 다 school을 따로 전달받지 않아도 그대로 사용할 수 있어요.
① 지역변수를 함수 밖에서 사용 — def test(): num = 10 다음에 함수 밖에서 print(num)을 하면 오류가 납니다.
② 같은 변수라고 착각 — 함수 밖의 score = 100과 함수 안의 score = 50은 이름만 같을 뿐 서로 다른 변수입니다.
③ 모든 변수를 전역으로 만들기 — 가능은 하지만 좋은 습관이 아닙니다. 그 함수 안에서만 필요한 값은 지역변수로 만드는 것이 코드를 훨씬 깔끔하게 만듭니다.
- 함수 안에서 만든 변수를 무엇이라고 하는가?
- 함수 밖에서 만든 변수를 무엇이라고 하는가?
정답
2. 전역변수(Global Variable)
- 다음 코드의 실행 결과를 작성하시오.
num = 5
def show():
num = 10
print(num)
show()
print(num) - 지역변수를 함수 밖에서 사용하면 어떤 오류가 발생하는지, 그 이유와 함께 서술하시오.
정답
5
2. NameError가 발생합니다. 지역변수는 함수가 실행되는 동안에만 존재하고, 함수 실행이 끝나면 사라지기 때문에 함수 밖에서는 그 변수를 찾을 수 없습니다.
'Language > Python' 카테고리의 다른 글
| [고등학생부터, 파이썬] 16. 함수 종합 프로젝트 (0) | 2026.09.01 |
|---|---|
| [고등학생부터, 파이썬] 14. 함수(Function) (0) | 2026.08.20 |
| [고등학생부터, 파이썬] 13. 자료구조 총정리 (0) | 2026.08.20 |
| [고등학생부터, 파이썬] 12. 딕셔너리(Dictionary) (0) | 2026.08.20 |
| [고등학생부터, 파이썬] 11. 튜플(Tuple)과 세트(Set) (0) | 2026.08.20 |
댓글