사전에서 값을 찾는 작업은 빠르다. 하지만 불필요한 탐색은 다른 쓸데없는 코드만큼이나 실행
속도를 떨어트린다. 과도한 사전 탐색 때문에 이런 문제가 불거지는 곳이 바로 파이썬의 네임
스페이스 관리다.
파이썬에서 변수, 함수, 모듈이 사용될 때 그 객체를 어디서 찾을지 결정하는 계층이 있다. 가
장 먼저 모든 지역 변수를 담은
locals
()
배열을 찾는다. 파이썬은 지역 변수 탐색을 빨리 끝
내도록 최선을 다하며, 이 과정은 사전 탐색을 하지 않는 유일한 부분이다. 만약 여기서 해당
객체를 찾을 수 없으면
globals
()
사전에서 찾는다.
globals
()
에서도 찾을 수 없다면 마지
막으로
__
builtin
__
객체에서 찾는다. 여기서
locals
()
와
globals
()
는 명백한 사전이지만
__
builtin
__
은 기술적으로는 모듈 객체라는 점이 중요하다.
__
builtin
__
은 그 모듈 내부에
서
locals
()
사전(여기에 모듈 객체와 클래스 객체가 저장된다)을 탐색하여 특정 속성을 찾
는다.
11
더 명확히 하기 위해 다른 범위
scope
에 정의된 함수를 호출하는 간단한 예를 살펴보자(예제
4
-
8
). 이어서
dis
모듈로 이 함수를 역어셈블(예제
4
-
9
)하고 네임스페이스 탐색이 어떻게
이루어지는지
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.