본문 바로가기

컴퓨터/파이썬 공부정리

[Python] 한권으로 개발자가 원하던 파이썬 심화 A to Z - 1. globals(), vars()

내장함수 global는 전역 이름공간을 조회해서 딕셔너리로 반환한다. 이름공간 내의 원소를 검색할 때는 색인 연산을

사용하고 변수 이름과 같은 문자열 i를 넣어 조회하면 변수에 저장된 값 100을 출력한다.

i = 100
print(globals())
결과 : {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001FFEE280820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'c:/Users/xxxxx/OneDrive/Desktop/C/test3.py', '__cached__': None, 'i': 100}{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001FFEE280820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'c:/Users/xxxxx/OneDrive/Desktop/C/test3.py', '__cached__': None, 'i': 100}

'i' : 100 을 포함한 '__name__' : '__main__' 등의 전역변수가 딕셔너리로 나타나있다.

i = 100
print(globals()['i'])
결과 : 100

이 중 'i'를 index로 하여 출력하면 'i'의 value인 100이 반환되어 나타낸다.


전역 이름공간에 저장된 변수를 조회하는 내장함수 vars도 내장 모듈 __buitins__에서 확인할 수 있다. 함수를 실행한 후에 변수를 조회하면 값을 출력한다. 이처럼 전역 이름공간을 조회해서 내부에 저장된 값을 조회할 수 있다.

def solve():
    print('함수 내에서 vars')
    print(vars())

print('함수 밖에서 vars')
print(vars())
solve()
  함수 밖에서 vars
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000208504F0820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'c:/Users/xxxxx/OneDrive/Desktop/C/test3.py', '__cached__': None, 'solve': <function solve at 0x0000020850669EE0>}
함수 내에서 vars
{}
i = 100
print(vars()['i'])
결과 : 100

 

추가:

vars([obejct]) : 내장함수, object 없이 쓸 경우 지역 변수의 사전을 넘김. object 가 들어가면 그 객체(모듈, 클래스,

클래스 인스터스)의 사전을 넘김.

print(vars(__loader__))
결과 : {'name': '__main__', 'path': 'c:/Users/xxxxx/OneDrive/Desktop/C/test3.py'}

출처: https://sarangyik.tistory.com/entry/python-메소드-및-함수정리-모음 [이갱 개인 공부자료]