개요
2022.10.01 - [Python] 전역/지역 변수와 범위에서 전역변수와 지역변수에 대해 간단히 정리했다. 이 글에서는 특정 모듈 내에서 사용되는 전역 변수를 확인하고 설정하는 방법을 정리한다.
globals()
Python 내장 함수 중 하나로, 현재 모듈에서 사용하는 전역 변수의 이름과 값으로 이루어진 Dictionary를 반환한다.
예로 들어 아래와 같이 test 함수 내에 지역 변수 a, b가 정의되어 있고, 전역 변수로 c, b가 정의되어 있는 경우 globals 함수의 출력을 살펴본다.
def test():
a = 1
b = 2
test()
c = 3
b = 4
print ("Global Variables in this module")
print (globals())
실행 결과
GlobalVariablesinthismodule
{
'__name__': '__main__',
'__doc__': None,
'__package__': None,
'__loader__': <_frozen_importlib_external.SourceFileLoaderobjectat0x000001D4E0546CD0>,
'__spec__': None,
'__annotations__': {
},
'__builtins__': <module'builtins'(built-in)>,
'__file__': 'D:\\PycharmProjects\\your_project\\global_func.py',
'__cached__': None,
'test': <functiontestat0x000001D4E058E160>,
'c': 3,
'b': 4
}
정의한 변수 외에 시스템에서 사용하는 변수에 대한 정보도 함께 확인할 수 있다. 변수가 아니라 정의한 함수에 대한 정보도 출력에 포함된다.
전역 변수 설정
전역 변수를 수정하거나 추가할 때는 globals()를 Dictionary와 비슷하게 다루면 된다.
def test():
a = 1
b = 2
test()
c = 3
b = 4
print("Global Variables in this module")
print([f"{k}:{v}" for k, v in globals().items() if not k.startswith('__')])
# 전역 변수 설정
globals()['c'] = 5
globals()['e'] = 5
print("Global Variables in this module")
print([f"{k}:{v}" for k, v in globals().items() if not k.startswith('__')])
실행 결과
전역 변수 c의 값이 달라지고, 전역 변수 e가 추가된 것을 확인할 수 있다.
참고 문서
https://docs.python.org/ko/3.8/library/functions.html#globals
https://smartits.tistory.com/283