Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 임포트한 모듈 간 전역 변수 가시성 완벽 이해하기

Python 전역 변수는 모듈 단위로 동작합니다

Python에서 전역 변수(global variable)는 하나의 모듈 내부에서만 유효하며, 여러 모듈에 걸쳐 자동으로 공유되지 않습니다.

이는 C 언어와 크게 다른 부분입니다. C에서는 static으로 명시적으로 선언하지 않는 한, 전역 변수가 모든 소스(구현) 파일에서 동일하게 공유됩니다. 하지만 Python은 각 모듈이 독립적인 네임스페이스(namespace)를 가지기 때문에, 모듈 A에서 선언한 전역 변수를 모듈 B에서 그대로 참조할 수 없습니다.

방법 1: 모듈 속성(Attribute)으로 값 설정하기

임포트한 모듈에 대해 진정한 의미의 '전역' 변수처럼 값을 공유하고 싶다면, 해당 모듈의 속성(attribute)으로 직접 설정하는 방법이 있습니다.

import module1
module1.a = 3

위 예제처럼 module1.a = 3을 실행하면, module1 내부의 변수 a 값이 변경되며 해당 모듈을 사용하는 다른 코드에서도 변경된 값을 확인할 수 있습니다.

방법 2: 공유 모듈을 만들어 함께 임포트하기

반대로, 하나의 변수를 여러 모듈이 함께 공유해야 하는 상황이라면 더 깔끔한 설계 방식이 있습니다. 바로 변수를 별도의 공용 모듈(예: global_module.py)에 두고, 필요한 모든 파일이 이 모듈을 임포트하도록 하는 것입니다.

# global_module.py
var = None

# module1.py
import global_module

def fun():
    print(global_module.var)

# 다른 파일 (메인 실행부)
import global_module
import module1

global_module.var = 3
module1.fun()  # 출력 결과: 3

정리

  • Python의 전역 변수는 모듈 범위(module scope)에 한정되며, C처럼 프로그램 전체에서 공유되지 않습니다.
  • 특정 모듈의 변수를 외부에서 변경하려면 모듈이름.변수 = 값 형태로 모듈 속성을 설정하면 됩니다.
  • 여러 모듈이 같은 변수를 공유해야 한다면, 별도의 공용 모듈을 만들어 각 파일에서 임포트하는 구조가 유지보수 측면에서 가장 권장됩니다.