globals()와 locals() 함수란?
파이썬에서 globals()와 locals() 함수는 호출되는 위치에 따라 전역 네임스페이스 또는 지역 네임스페이스에 존재하는 이름(변수명)들을 반환하는 데 사용됩니다.
locals() 함수
함수 내부에서 locals()를 호출하면, 해당 함수 안에서 지역적으로 접근할 수 있는 모든 이름들이 반환됩니다. 즉, 그 시점의 지역 변수 목록을 확인할 수 있습니다.
globals() 함수
반대로 함수 내부에서 globals()를 호출하면, 해당 함수 안에서 전역적으로 접근할 수 있는 모든 이름들이 반환됩니다. 즉, 현재 스크립트의 전역 변수 목록을 확인할 수 있습니다.
두 함수의 반환 타입은 모두 딕셔너리(dictionary)입니다. 따라서 keys() 메서드를 사용하면 네임스페이스에 포함된 이름들을 손쉽게 추출할 수 있습니다.
print(globals().keys()) print(locals().keys())
reload() 함수로 모듈 다시 불러오기
모듈을 스크립트에 임포트(import)하면, 모듈의 최상위(top-level) 코드는 단 한 번만 실행됩니다. 같은 세션에서 여러 번 임포트해도 파이썬은 이미 로드된 모듈을 재사용하기 때문입니다.
따라서 모듈의 최상위 코드를 다시 실행하고 싶다면 reload() 함수를 사용해야 합니다. reload() 함수는 이전에 임포트했던 모듈을 다시 임포트하여 최신 코드를 반영합니다.
reload() 함수의 기본 문법은 다음과 같습니다.
reload(module_name)
여기서 module_name은 모듈 이름이 담긴 문자열이 아니라, 재로드하려는 모듈 객체 자체의 이름이라는 점에 유의해야 합니다. 예를 들어 hello 모듈을 다시 불러오려면 다음과 같이 작성합니다.
reload(hello)
참고: 파이썬 3에서의 reload()
파이썬 2에서는 위처럼 내장 함수로 제공되었지만, 파이썬 3부터는 내장 함수에서 제거되어 importlib 모듈로 이동했습니다. 파이썬 3 환경에서는 아래와 같이 사용합니다.
import importlib importlib.reload(hello)