파이썬/기초 프로그래밍

Python 함수 내 전역 변수(Global Variable) 사용하기

Data Jun 2025. 9. 13. 10:06

파이썬을 사용하다 보면, 함수 바깥에서 선언한 변수를 함수 안에서 활용하고 싶을 때가 있습니다.
이때 전역 변수(Global Variable) 개념과 global 키워드가 중요한 역할을 합니다.

 

1. 전역 변수 읽기

함수 내부에서는 전역 변수를 읽는 것(read) 은 자유롭게 할 수 있습니다.

count = 10  # 전역 변수

def print_count():
    print("현재 count:", count)

print_count()  # ✅ 출력: 현재 count: 10

여기서는 count를 함수 안에서 사용했지만, 단순히 읽기만 했기 때문에 문제가 없습니다.

 

2. 전역 변수 수정하기

문제는 전역 변수를 수정하려고 할 때 발생합니다.

count = 10

def increase_count():
    count = count + 1  # ❌ UnboundLocalError 발생
    print(count)

increase_count()

이 코드를 실행하면 UnboundLocalError가 발생합니다.

파이썬은 함수 안에서 변수를 새로 할당하려고 하면, 그 변수를 지역 변수(local variable) 로 간주하기 때문입니다.

 

3. global 키워드로 수정하기

전역 변수를 함수 안에서 수정하고 싶다면 global 키워드를 사용해야 합니다.

count = 10

def increase_count():
    global count  # 전역 변수임을 명시
    count = count + 1
    print("증가된 count:", count)

increase_count()  # 출력: 증가된 count: 11
print("함수 실행 후 count:", count)  # 출력: 11

global count를 명시하면 함수 안에서 전역 변수 count를 직접 수정할 수 있습니다.

 

4. 하지만, global은 지양하는 게 좋다

global은 편리하지만, 프로그램이 커질수록 코드의 가독성과 유지보수성이 떨어집니다.
어디에서 전역 변수가 변경되었는지 추적하기 어려워 버그의 원인이 될 수 있습니다.

 

5. 더 나은 방법

1️⃣ 함수 인자로 전달하고 반환값으로 처리하기

def increase_count(count):
    count = count + 1
    return count

count = 10
count = increase_count(count)
print("최종 count:", count)  # 출력: 11

 

2️⃣ 클래스 사용하기

class Counter:
    def __init__(self, count=0):
        self.count = count

    def increase(self):
        self.count += 1

counter = Counter(10)
counter.increase()
print("최종 count:", counter.count)  # 출력: 11

 

 

 

정리하면

  • 함수 내부에서 전역 변수 읽기는 자유롭다.
  • 함수 내부에서 전역 변수 수정은 global 키워드를 명시해야 한다.
  • 하지만 global은 코드의 유지보수성을 떨어뜨리므로 지양하는 것이 좋다.
  • 대신 함수 인자/반환값 혹은 클래스/객체를 활용하는 방법이 바람직하다.