Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 dir(), globals() 및 locals() 함수의 차이점은 무엇입니까?


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}