>백엔드 개발 >파이썬 튜토리얼 >Python 3.3에서는 패키지에서 __init__.py가 필요하지 않습니까?

Python 3.3에서는 패키지에서 __init__.py가 필요하지 않습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-29 06:54:09386검색

Does Python 3.3  Eliminate the Need for __init__.py in Packages?

Python 3.3의 패키지에는 __init__.py가 필요하지 않습니까?

Python 3.3 이상 버전에서는 네임스페이스 패키지. 이 기능을 사용하면 __init__.py 파일 없이 패키지를 생성할 수 있습니다.

네임스페이스 패키지와 일반 패키지

  • 네임스페이스 패키지: __init__.py 파일이 없습니다. 여러 모듈이 서로 다른 패키지에 걸쳐 동일한 패키지에 기여할 수 있습니다. 디렉터리.
  • 일반 패키지: __init__.py 파일이 있어 자체 포함되도록 만들고 해당 모듈을 단일 디렉터리 계층 구조로 격리합니다.

< h2>네임스페이스 패키지를 사용하는 경우

주요 사용 사례 네임스페이스 패키지의 경우는 서로 다른 위치에 있는 여러 라이브러리가 있고 상위 패키지에 하위 패키지를 제공하려는 경우입니다.

예:

google_pubsub/ <- 패키지 1

google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        pubsub/         <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            foo.py

google_storage/ <- 패키지 2

google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        storage/        <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            bar.py

이 예에서는 google_pubsub와 google_storage가 모두 동일한 google/cloud 네임스페이스를 공유합니다. 이를 통해 전체 경로를 제공하지 않고도 두 라이브러리 중 하나에서 모듈을 가져올 수 있습니다.

일반 패키지

대부분의 사용 사례에서는 __init__.py 파일을 사용하여 일반 패키지를 생성합니다. 여전히 권장되는 접근 방식입니다. 이는 자체 포함을 제공하고 잠재적인 네임스페이스 충돌을 방지합니다.

위 내용은 Python 3.3에서는 패키지에서 __init__.py가 필요하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.