Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 모듈을 다시 로드하시겠습니까?

<시간/>

reload() - 이전에 가져온 모듈 또는 로드된 모듈을 다시 로드합니다. 이것은 대화식 세션 동안 테스트 스크립트를 반복적으로 실행하는 상황에서 편리합니다. 코드를 변경하더라도 항상 우리가 개발 중인 모듈의 첫 번째 버전을 사용합니다. 이 시나리오에서는 모듈이 다시 로드되었는지 확인해야 합니다.

reload()에 전달된 인수는 이전에 성공적으로 가져온 모듈 객체여야 합니다.

구문

import importlib
importlib.reload(sys)

예시

>>> import sys
>>> import importlib
>>> importlib.reload(sys)
<module 'sys' (built-in)>

그러나 이전에 가져오지 않은 모듈을 다시 로드하려고 하면 오류가 발생할 수 있습니다.

>>> import importlib
>>> importlib.reload(sys)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
importlib.reload(sys)
NameError: name 'sys' is not defined

reload()가 실행될 때 이해해야 할 몇 가지 사항 -

  • Python 모듈의 코드가 다시 컴파일되고 모듈 수준 코드가 다시 실행되어 원래 모듈을 로드한 로더를 재사용하여 모듈의 사전에 있는 이름에 바인딩된 새로운 개체 집합을 정의합니다. 그러나 모듈의 초기화 기능은 다시 로드되지 않습니다.

  • 오래된 개체는 참조 횟수가 0이 된 후에만 회수됩니다.

  • 모듈 네임스페이스의 이름은 새 개체로 변경됩니다(있는 경우).

  • 이전 개체의 다른 참조(예:모듈 외부의 이름)는 반드시 새 개체를 참조하는 것은 아니며 필요한 경우 이러한 개체가 발생하는 각 네임스페이스에서 업데이트되어야 합니다.