파이썬에서의 순환 import

조회수 2330회

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

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

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

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

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

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

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

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

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)