모듈을 수정한 뒤 매번 셸을 재시작하지 않고도 인터프리터에서 바로 테스트하고 싶다면 reload(moduleName) 함수를 사용하면 됩니다. reload(moduleName)은 이전에 로드했던 모듈을 다시 불러오는 함수로, 해당 모듈이 import moduleName 구문으로 가져와졌다고 가정합니다.
이 함수는 대화형(인터랙티브) 환경에서의 사용을 위해 만들어졌습니다. 즉, 모듈의 소스 파일을 편집한 후 Python을 종료하고 다시 실행하지 않고도 변경된 코드를 즉시 테스트할 수 있도록 도와줍니다.
사용 예시
>>> import mymodule
>>> # mymodule을 수정한 뒤 이 스크립트에서 다시 로드
>>> reload(mymodule)
주의할 점은 moduleName 자리에는 모듈 이름이 담긴 문자열이 아니라 실제 모듈 객체를 전달해야 한다는 것입니다. 예를 들어 reload("mymodule")처럼 작성하면 오류가 발생합니다.
Python 3에서의 reload
Python 3에서는 reload가 내장 함수(builtins)에서 제거되고 imp 모듈로 옮겨졌습니다. 따라서 Python 3 초기 버전에서는 단순히 reload(moduleName)라고 쓰지 않고 imp.reload(moduleName) 형태로 작성해야 합니다.
참고로 imp 모듈은 Python 3.4부터 지원 중단(deprecated)되었으므로, 최신 Python 3 환경에서는 표준 라이브러리인 importlib를 사용하는 것이 권장됩니다.
>>> import importlib
>>> import mymodule
>>> # 모듈 수정 후 다시 로드
>>> importlib.reload(mymodule)
정리하면, 개발 과정에서 모듈을 반복적으로 수정하고 테스트할 때 reload 기능을 활용하면 인터프리터를 재시작하는 번거로움 없이 빠르게 변경 사항을 확인할 수 있습니다.