2014-01-19 5 views
3

import math을 실행하는 파일 하나와 import math을 갖고 있고 첫 번째 파일을 가져 오는 두 번째 파일이있는 경우 메모리에 math 모듈이 두 번로드됩니까?파이썬 모듈을 두 번 가져올 수 있습니까?

+0

아니요 ............. – thefourtheye

+0

Python 가져 오기를 여러 번 가져 오지 않습니다. 다시 가져 오려는 경우 [reload()] (http : //docs.python. org/2/library/functions.html # reload) –

+2

@KobiK -'reload'가 Python 3.x에서 삭제되었습니다. Python 3.2 이상에서는 ['imp.reload'] (http://docs.python.org/3.2/library/imp.html#imp.reload)를 사용할 수 있습니다. – iCodez

답변

6

import math을 입력하면 sys.modules에 입력됩니다. 다음으로 import math을 수행하면 mathsys.modules에 있는지 확인하고 거기에서 가져옵니다.

그래서 한 번만 가져옵니다.

파이썬 모듈을 가져

http://effbot.org/zone/import-confusion.htm

는 먼저 모듈이 이미 반입되어 있는지 모듈 레지스트리 (sys.modules에)를 검사한다. 이것이 의 경우, 파이썬은 기존 모듈 객체를있는 그대로 사용합니다.

그렇지 않으면, 파이썬은 다음과 같이 수행합니다

  1. 이 sys.modules에 사전에 해당 모듈의 객체를 삽입 (이 본질적으로 사전입니다) 비어있는 새 모듈 객체를 생성
  2. 로드 모듈 코드 개체 (필요한 경우 먼저 모듈 컴파일)
  3. 새 모듈의 네임 스페이스에서 모듈 코드 개체를 실행합니다. 코드에 의해 할당 된 모든 변수는 모듈 객체를 통해 사용할 수 있습니다.

이 은 이미 가져온 모듈을 가져 오는 것이 상당히 저렴함을 의미합니다. 파이썬은 사전에서 모듈 이름을 찾아야합니다.

0

모듈을 한 번 가져옵니다. 두 번째로

import math 

이 발생하면 이미 가져온 모듈이 가져 오는 모듈의 네임 스페이스에있는 math 이름에 바인딩됩니다.

0

파이썬 모듈을 여러 번 가져 오지 않으므로 import 문 명령을 두 번 실행해도 모듈이 다시로드되지 않습니다.

다시로드하려면 reload 문을 실행해야합니다.

+0

그게 위의 코멘트 수있었습니다. –

관련 문제