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처럼 프로그램 전체에서 공유되지 않습니다.
- 특정 모듈의 변수를 외부에서 변경하려면
모듈이름.변수 = 값형태로 모듈 속성을 설정하면 됩니다. - 여러 모듈이 같은 변수를 공유해야 한다면, 별도의 공용 모듈을 만들어 각 파일에서 임포트하는 구조가 유지보수 측면에서 가장 권장됩니다.