>백엔드 개발 >파이썬 튜토리얼 >버전 3.3의 Python 패키지에는 `__init__.py`가 여전히 필요합니까?

버전 3.3의 Python 패키지에는 `__init__.py`가 여전히 필요합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-29 00:33:15391검색

Is `__init__.py` Still Required for Python Packages in Version 3.3 ?

Python의 __init__.py 파일은 버전 3.3에서 더 이상 패키지의 필수 요소가 아닙니다.

질문

Python 3.3에서는 더 이상 필요하지 않습니까? ? 패키지에 __init__.py 파일을 제공하시겠습니까?

파싱

소개: __init__.py 파일의 역할

Python에서 __init__.py 파일의 역할은 디렉터리를 패키지로 사용하면 이 디렉터리의 다양한 디렉터리와 모듈을 네임스페이스로 구성할 수 있습니다. Python 2.7 이하에서는 패키지를 생성하려면 __init__.py 파일이 필요합니다.

Python 3.3의 __init__.py 파일

Python 3.3에서는 암시적 네임스페이스 패키지 개념이 도입되어 __init__.py 없이도 가능합니다. 파일 및 패키지 생성될 수도 있습니다. 이는 이제 디렉터리를 네임스페이스 패키지로 지정할 수 있고 해당 디렉터리의 콘텐츠를 모듈화할 수 있음을 의미합니다.

네임스페이스 패키지 사용 사례

이 암시적 네임스페이스 패키지 기능의 가장 일반적인 사용 사례는 서로 다른 위치의 여러 라이브러리가 하위 패키지를 상위 패키지에 제공하도록 허용하는 것입니다. 패키지 . 예를 들어, 다음 구조를 제공하는 google_pubsub 및 google_storage라는 두 개의 라이브러리가 있다고 가정합니다.

google_pubsub/              # 包 1
    google/                 # 命名空间包(没有 __init__.py)
        cloud/              # 命名空间包(没有 __init__.py)
            pubsub/         # 常规包(有 __init__.py)
                __init__.py # 必需的,用于创建常规包
                foo.py

google_storage/             # 包 2
    google/                 # 命名空间包(没有 __init__.py)
        cloud/              # 命名空间包(没有 __init__.py)
            storage/        # 常规包(有 __init__.py)
                __init__.py # 必需的,用于创建常规包
                bar.py

이 경우 google/ 및 google/cloud/ 디렉터리는 네임스페이스 패키지여야 하므로 google_pubsub 및 google_storage 패키지는 동일한 상위 패키지 아래의 하위 패키지로 간주됩니다.

결론:

  • Python 패키지에는 다음 두 가지 유형이 있습니다.

    • 네임스페이스 패키지(암시적 패키지) ): 여러 라이브러리의 콘텐츠를 상위 패키지에 제공하는 데 사용되는 __init__.py 파일이 필요하지 않습니다.
    • 일반 패키지(명시적 패키지): 패키지를 식별하려면 __init__.py 파일이 필요하며 현재 디렉터리의 콘텐츠만 포함됩니다.
  • 대부분의 경우 더 간단하고 이해하기 쉽기 때문에 일반 패키지(즉, __init__.py 파일이 포함된 패키지)를 사용하는 것이 좋습니다.
  • __init__.py 파일은 네임스페이스 패키지를 생성해야 하는 특정 경우에만 사용하면 안 됩니다.

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

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