파이썬에서의 순환 import


만약 두 모듈이 서로를 import할 경우엔 어떻게 되나요?

일반화하자면, 만약 파이썬에서 순환되는 import가 발생하면 어떻게 되나요?

  • 2016년 06월 13일에 작성됨

조회수 108


1 답변


좋아요
0
싫어요
채택취소하기

예전에 질문 내용과 관련하여 comp.lang.python에서 이루어진 좋은 토론이 있습니다. 이 내용이 꽤 확실하게 답변이 될 것 같네요.

import는 꽤나 간단합니다. 아래의 내용만 기억하면 됩니다 :

'import'와 'from xxx import yyy'는 실행가능한 구문입니다. 이것들은 실행중인 프로그램이 해당 줄에 다다를 때 실행됩니다.

만약 모듈이 sys.modules에 존재하지 않는다면, import는 새로운 모듈 엔트리를 sys.modules에 생성하고, 해당 모듈의 코드를 실행합니다. 이 코드의 실행을 전부 마칠 때까지는 호출한 모듈로 반환되지 않습니다.

만약 모듈이 sys.modules에 존재한다면, import는 단순히 코드의 실행이 완료되었든 아니든 모듈을 반환합니다. 이것이 바로 순환되는 import가 부분적으로 비어있는 형태의 모듈을 반환하는 이유입니다.

마지막으로, 실행 중인 스크립트는 __main__이라는 이름의 모듈에서 실행되는데, 해당 스크립트를 스크립트 내에서 import하면 __main__과는 무관한 새로운 모듈을 생성합니다.

이 내용들을 숙지하고 있으면, 모듈을 import하는 것에 대해서는 모두 알고 있다고 볼 수 있습니다.

  • 2016년 06월 14일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close