2021년 5월 21일 금요일

[파이썬] 전역 변수들의 상태 등을 보여주는 globals() 함수

 

특정 모듈내에서 사용되는 전역 변수들의 변수 이름 및 현재 값 등을 알고 싶을 때 사용하는 함수가 바로 globals()라는 파이썬 빌트인 함수가 있습니다.

 

def test():

    a = 1

    b = 2

    print ("Local Variables in test function")

    print(locals())

 

test()

 

c = 3

b = 4

 

print ("Global Variables in this module")

print (globals())

 

위의 코드에서 locals 함수는 test 함수내의 로컬 변수의 이름과 현재 값을 출력하며, globals 함수는 이 코드내의 전역 변수의 이름과 현재 값을 출력하여 보여줍니다.

 

Local Variables in test function

{'a': 1, 'b': 2}

 

Global Variables in this module

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0368AF40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'globals_test1.py', '__cached__': None, 'test': <function test at 0x037EAFA0>, 'c': 3, 'b': 4}

 

이전에 올린 locals 함수와 마찬가지로 globals 함수도 dict 데이터형으로 전역 변수들의 이름과 현재 값을 출력합니다. 실제 사용하는 변수외에 다른 부분들이 같이 나오는데, 이것들은 시스템에서 사용하는 전역변수들입니다.

 

그래서 아래 코드와 같이 전역 변수의 값을 변경하거나 추가하는 코드를 실행해보도록 하겠습니다.

 

c = 3

b = 4

 

print ("Global Variables in this module")

print (globals())

 

globals()['c'] = 13

 

print ("Global Variables in this module after changing values")

print (globals())

 

globals()['d'] = 14

 

print ("Global Variables in this module after adding variable and value")

print (globals())

 

그리고 이 코드의 실행결과는 아래와 같습니다.

 

Global Variables in this module

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0336AF40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'globals_test2.py', '__cached__': None, 'c': 3, 'b': 4}

 

Global Variables in this module after changing values

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0336AF40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'globals_test2.py', '__cached__': None, 'c': 13, 'b': 4}

 

Global Variables in this module after adding variable and value

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0336AF40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'globals_test2.py', '__cached__': None, 'c': 13, 'b': 4, 'd': 14}

 

두번째 실행결과를 보면 locals 함수와는 다르게 globals 함수를 사용하여 전역변수의 값이 3에서 13으로 변경가능함을 볼 수 있습니다.

 

그리고 마찬가지로 globals 함수를 사용하여 새로운 전역변수 추가도 가능함을 볼 수 있습니다.

 

댓글 없음:

댓글 쓰기