2016-11-19 3 views
0

나는 그 성명서를 시험해 보았지만 그 결과는 공식적인 설명과 일치하지 않았다. Quotation 이하이다"가져 오기 ..."응시의 정확한 의미는 무엇입니까?

양식에서

(가) 약간 더 복잡한 프로세스를 사용

  1. 절에서 로딩에 지정되고 필요한 경우 초기화 모듈을 발견; 가져 오기 절에 지정된 식별자의 각
  2. 는 : 가져온 모듈이 해당 이름의 속성이있는 경우 는
    1. 검사는
    2. 없는 경우, 그 이름의 서브 모듈을 수입하고 시도 가져온 모듈을 확인 그 속성에 대해 다시
    3. 속성이 없으면 ImportError가 발생합니다.
    4. 그렇지 않으면, 그 값에 대한 참조의 이름을 사용하여 로컬 공간에 저장되어있는 절로서 달리 I 네임 스페이스 패키지를 생성

속성 이름을 사용하여, 존재하면 l007이라는 서브 모듈이 배치 된 l007이라는 이름의 인터프리터에서 "l007 import l009"라고 입력하면 실행이 정상적으로 이루어졌지만 어떤 경우에는 ImportError가 발생해야합니다. 내 이해가 잘못 되었나요?

+0

왜 ImportError가 발생했다고 생각합니까? – BrenBarn

+0

모듈 l009에는 공식 설명과 일치하는 l009라는 속성이 없습니다. –

답변

1

this documentation 참조 : 서브 모듈이 어떤 메커니즘을 사용하여로드

(예 : importlib의 API는 import 또는 import-from 문, 또는 내장 __import__())는 서브 모듈에 부모 모듈의 네임 스페이스에 배치됩니다 바인딩 목적. 예를 들어 패키지 spam에 하위 모듈 foo이 있고 spam.foo을 가져온 후 spam의 하위 모듈에 바인딩 된 foo 속성이 있습니다. 서브 모듈 가져 오기가 발생한 후 견적의 단계가에있는 순서가 왜

. l007 처음에 속성 l009가 없지만, 그것은 하나가됩니다.