globals(), locals(), vars()의 차이점 분석
Python의 네임스페이스 조작 영역에는 다음과 같은 것들이 있습니다. 세 가지 필수 함수: globals(), locals() 및 vars(). 이러한 각 함수는 사전을 반환하지만 근본적인 차이점을 자세히 살펴볼 필요가 있습니다.
globals()
일관되게 globals()는 해당 함수의 네임스페이스를 나타내는 사전을 반환합니다. 현재 모듈. 이 사전은 해당 모듈 내에 정의된 모든 전역 변수, 함수 및 클래스를 보유합니다.
locals()
globals()와 달리 locals()는 동적 동작을 나타냅니다. . 함수 내에서 호출되면 클로저 변수의 변수를 포함하여 현재 지역 변수가 포함된 사전을 반환합니다. 그러나 이 사전은 임시 스냅샷입니다. locals()에 대한 호출 또는 현재 스택 프레임의 f_locals 속성에 대한 액세스만 해당 내용의 업데이트를 트리거합니다. locals() 사전 또는 해당 변수에 대한 할당은 교차 업데이트되지 않습니다.
vars()
Vars()도 사전을 반환하지만 다양성이 뛰어납니다. 모듈 및 함수 네임스페이스를 넘어 확장됩니다. 인수 없이 호출되면 vars()는 locals()와 유사하게 작동하여 현재 네임스페이스에 대한 사전을 반환합니다. 그러나 객체가 인수로 전달되면 vars()는 해당 객체의 dict를 조사하여 해당 속성을 검색합니다.
업데이트 및 효과
locals()나 vars() 모두 네임스페이스의 변경 사항에 따라 사전을 자동으로 최신 상태로 유지하지 않습니다. 변수에 대한 할당은 사전을 업데이트하지 않으며, 반대로 사전에 대한 변경 사항은 변수에 전파되지 않습니다. 그러나 f_locals에 액세스하거나(locals()의 경우) 객체의 dict에 액세스하면(vars()의 경우) 사전이 업데이트될 수 있습니다.
요약하자면, globals(), locals() 및 vars()는 Python에서 네임스페이스를 조작하기 위한 세 가지 도구를 제공합니다. 차이점을 이해하면 개발자는 Python의 런타임 환경을 정밀하고 제어하여 탐색할 수 있습니다.
위 내용은 Python에서 globals(), locals() 및 vars()의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!