Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 모듈 다시 로드(reload)하는 방법과 동작 원리

Python 모듈을 다시 로드하는 방법

파이썬에서는 reload() 함수를 사용하여 이미 로드된 모듈을 스크립트를 종료하지 않고도 다시 불러올 수 있습니다. 이 기능은 특히 대화형(인터랙티브) 환경에서 유용합니다. 모듈의 소스 파일을 수정한 뒤, 파이썬을 종료하고 다시 실행하지 않아도 변경 사항을 즉시 테스트할 수 있기 때문입니다.

기본 사용법

>>> import mymodule
>>> # mymodule을 수정한 후 현재 세션에서 다시 로드
>>> reload(mymodule)

주의할 점은 moduleName이 모듈 이름을 담은 문자열이 아니라, 실제 모듈 객체의 이름이라는 것입니다. 즉, reload("mymodule")처럼 따옴표로 감싸면 오류가 발생합니다.

reload() 함수의 동작 원리

파이썬 공식 문서에서는 reload() 함수의 동작을 다음과 같이 설명합니다.

  • 모듈의 코드가 다시 컴파일되고, 모듈 레벨의 코드가 재실행되어 새로운 객체 집합이 정의됩니다. 이 객체들은 모듈 딕셔너리(네임스페이스)의 이름들에 바인딩됩니다.
  • C 확장(extension) 모듈의 초기화(init) 함수는 두 번째로 호출되지 않습니다.
  • 모듈 네임스페이스 내부의 이름들은 새롭거나 변경된 객체를 가리키도록 갱신됩니다.
  • 반면, 이전 객체를 참조하던 모듈 외부의 이름(예: 다른 곳에서 가져온 이름)은 자동으로 새 객체에 재바인딩되지 않습니다. 따라서 최신 객체를 반영하려면 해당 이름이 사용되는 각 네임스페이스에서 직접 업데이트해야 합니다.

Python 3에서의 변화: importlib.reload()

위에서 소개한 reload()는 파이썬 2의 내장 함수입니다. 파이썬 3부터는 내장 함수가 제거되고 importlib 모듈로 이동했으므로, 최신 버전에서는 아래와 같이 사용해야 합니다.

# Python 3.x
>>> import importlib
>>> import mymodule
>>> importlib.reload(mymodule)

이처럼 importlib.reload()를 활용하면 개발 과정에서 모듈 수정 사항을 빠르게 반영하여 생산성을 높일 수 있습니다.