locals()는 로컬 범위에서 선언된 변수 사전을 반환하고 globals()는 전역 범위에서 선언된 변수 사전을 반환합니다. 전역 범위에서 locals() 및 globals()는 모두 전역 네임스페이스에 동일한 사전을 반환합니다. 두 함수의 차이점을 확인하기 위해 함수 내에서 호출할 수 있습니다. 예를 들어,
def fun(): var = 123 print "Locals: ", locals() print "Vars: ", vars() print "Globals: ", globals() fun()
이것은 출력을 줄 것입니다:
Locals: {'var': 123} Globals: {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'fun': <function fun at 0x00000000 037E3DD8>, '__doc__': None, '__package__': None}
vars()는 현재 네임스페이스의 사전(인수 없이 호출된 경우) 또는 인수의 사전을 반환합니다. locals()와 vars()의 주요 차이점은 vars()도 요청된 객체에 대한 인수와 반환 사전을 사용할 수 있다는 것입니다. 예를 들어, dict에 있는 객체의 속성을 원하면 해당 객체를 전달하고 해당 인스턴스에 대한 속성 dict를 얻을 수 있습니다.
객체에 대한 vars() 함수는 동일한 객체에 대한 __dict__ 속성과 유사합니다. __dict__는 객체에 대해 정의된 모든 속성을 반환합니다. 예를 들어,
class A(): def __init__(self, id): self.id = id a = A(1) print "__dict__: ", a.__dict__ print "vars(a): ", vars(a)
이것은 출력을 줄 것입니다:
__dict__: {'id': 1} vars(a): {'id': 1}