>  기사  >  백엔드 개발  >  Python에서 globals(), locals() 및 vars()는 어떻게 다릅니까?

Python에서 globals(), locals() 및 vars()는 어떻게 다릅니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-17 02:16:03307검색

How Do globals(), locals(), and vars() Differ in Python?

globals(), locals() 및 vars()의 뉘앙스 탐색

Python은 현재 네임스페이스: globals(), locals() 및 vars(). 각각은 특정 정보가 포함된 사전을 반환합니다.

globals()

globals()는 현재 모듈 네임스페이스의 사전을 일관되게 반환합니다. 모듈 내에서 전역적으로 정의된 모든 이름에 대한 액세스를 제공합니다.

locals()

locals()는 동적이며 동작은 범위에 따라 다릅니다.

  • 함수 내: locals()는 함수의 네임스페이스 사전을 반환합니다. 여기에는 호출 당시의 클로저 변수뿐만 아니라 지역 변수도 포함됩니다. 사전 업데이트는 지역 변수에 반영됩니다. 그러나 반환된 사전에 대한 할당은 지역 변수를 수정하지 않습니다.

예를 들어 함수에서:

def example():
    x = 1
    l = locals()
    l['x'] = 3
    print(x)  # Outputs 1, not 3
  • 함수 외부에서: locals()는 실제 네임스페이스 사전을 반환합니다. 사전에 대한 변경 사항은 네임스페이스에 반영되며 그 반대의 경우도 마찬가지입니다.

예:

class Test:
    a = 'one'
    huh = locals()
    b = 'two'
    huh['c'] = 'three'
    print(huh)  # Outputs {'a': 'one', 'b': 'two', 'c': 'three', 'huh': {...}}

vars()

vars()는 객체를 인수로 받아들이고 dict 속성을 ​​반환합니다. 일반적으로 객체의 dict에는 해당 속성 데이터가 저장됩니다. 따라서 vars()에 객체를 제공하면 해당 속성에 대한 액세스가 제공됩니다.

class Test:
    a = 'one'
    b = 'two'
    huh = vars(self)
    c = 'three'
    huh['d'] = 'four'

이 예에서 vars(self)는 테스트 인스턴스의 dict 속성을 ​​반환하여 다음에 대한 액세스를 허용합니다. 'a', 'b', 'c'와 같은 속성입니다.

위 내용은 Python에서 globals(), locals() 및 vars()는 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.