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

Python 네임스페이스 패키지의 모든 하위 모듈을 가져오는 방법

Python에서 모든 하위 모듈을 한 번에 가져오기

Python에서 패키지나 모듈의 모든 하위 모듈을 가져오려면 from module import * 구문을 사용할 수 있습니다. 이 방식은 해당 모듈 내에 정의된 모든 공개 객체(함수, 클래스, 변수 등)를 현재 네임스페이스로 불러옵니다.

기본 사용 예시

예를 들어 myModule이라는 모듈의 모든 요소를 가져오고, 호출할 때마다 myModule. 접두사를 붙이고 싶지 않다면 다음과 같이 작성합니다:

>>> from myModule import *

이렇게 하면 myModule.some_function() 대신 some_function()처럼 접두사 없이 바로 사용할 수 있습니다.

import * 사용 시 주의할 점

편리해 보이지만, 실무에서는 import * 사용을 지양하는 것이 좋습니다. 그 이유는 다음과 같습니다:

1. 코드 출처 추적이 어려워짐

import *를 사용하면 코드에서 사용되는 각 항목이 어느 모듈에서 왔는지 파악하기 어렵습니다. 시간이 지나면서 해당 import가 더 이상 필요하지 않다고 생각하게 되더라도, 실제로 안전하게 제거할 수 있는지 확신하기 매우 어려워집니다. 결국 불필요한 import가 코드에 고정되어 버리는 경우가 많습니다.

2. 네임스페이스 오염

모든 객체를 현재 네임스페이스로 불러오기 때문에 이름 충돌 위험이 커지고, 모듈 내에서 사용할 수 있는 이름 선택의 폭이 좁아집니다. 특히 규모가 있는 프로젝트에서는 유지보수성을 크게 떨어뜨릴 수 있습니다.

권장되는 대안

가독성과 유지보수성을 위해 다음과 같은 방식을 권장합니다:

  • 명시적 임포트: from myModule import func_a, ClassB처럼 필요한 항목만 명확히 가져옵니다.
  • 모듈 임포트: import myModulemyModule.func_a()처럼 접두사를 붙여 호출하면 출처가 명확해집니다.
  • __all__ 정의: 패키지 작성자라면 __init__.py__all__ 리스트를 정의하여 import * 시 노출될 항목을 제어할 수 있습니다.

결론적으로 from module import *는 빠른 테스트나 간단한 스크립트에는 유용할 수 있지만, 체계적인 코드베이스에서는 명시적인 임포트 방식을 사용하는 것이 훨씬 안전하고 전문적입니다.