Graham Dumpleton: 래피트(wrapt)를 ... 노트

Graham Dumpleton: 래피트(wrapt)를 이용한 지연 로딩

PEP 810은 Python에서 지연 모듈 가져오기를 위한 명시적인 구문을 도입합니다. 이전에는 패키지가 유사한 기능을 제공했지만 전용 언어 지원이 부족했습니다. wrapt 라이브러리의 새로운 지연 객체 프록시 기능은 지연 가져오기를 쉽게 구현할 수 있습니다. wrapt의 핵심 목적은 투명한 객체 프록시를 포함하는 몽키 패치입니다. 이러한 프록시는 대상 객체에 대한 액세스를 가로채 특정 작업을 수행할 수 있도록 합니다. 지연 객체 프록시는 객체 자체 대신 첫 번째 액세스 시 대상 객체를 생성하는 함수를 사용합니다. 이는 wrapt.LazyObjectProxy__import__를 사용한 예제를 통해 입증된 것처럼 지연 모듈 가져오기를 가능하게 합니다. 가짜 모듈로 sys.modules를 미리 수정하는 일부 방법과 달리 이 접근 방식은 전역 변경을 피합니다. wrapt 예제의 영향은 지연 가져오기가 수행된 범위로 제한되어 PEP 810의 지역화된 효과라는 목표와 일치합니다. 그러나 표준 가져오기 문과 다른 구문이 필요합니다. PEP 810은 범위 내에서 가짜 모듈 객체를 피하여 첫 번째 사용 시 참조가 실제 모듈이 되도록 하는 것을 목표로 합니다. wrapt 예제는 프록시 객체를 유지하며, 향후 실제 모듈로 대체될 수 있는 잠재적인 개선 사항이 있습니다.