Rumah > pembangunan bahagian belakang > Tutorial Python > Adakah `__init__.py` Masih Diperlukan untuk Pakej Python dalam Versi 3.3 ?

Adakah `__init__.py` Masih Diperlukan untuk Pakej Python dalam Versi 3.3 ?

Linda Hamilton
Lepaskan: 2024-11-29 00:33:15
asal
321 orang telah melayarinya

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

Fail __init__.py Python bukan lagi elemen yang diperlukan bagi pakej dalam versi 3.3

Soalan

Adakah ia tidak diperlukan lagi dalam Python 3.3 ? Sediakan fail __init__.py untuk pakej?

Menghuraikan

Pengenalan: Peranan fail __init__.py

Dalam Python, peranan fail __init__.py adalah untuk mengenal pasti direktori sebagai pakej Membenarkan direktori dan modul yang berbeza bagi direktori ini disusun ke dalam ruang nama. Dalam Python 2.7 dan lebih awal, fail __init__.py diperlukan untuk mencipta pakej.

fail__init__.py dalam Python 3.3

Dalam Python 3.3, konsep pakej ruang nama tersirat telah diperkenalkan, yang membolehkannya walaupun tanpa __init__.py Fail dan pakej juga boleh dibuat. Ini bermakna bahawa direktori kini boleh ditetapkan sebagai pakej ruang nama dan kandungan direktori itu boleh dimodulasi.

Kes penggunaan untuk pakej ruang nama

Kes penggunaan yang paling biasa untuk ciri pakej ruang nama tersirat ini adalah untuk membenarkan berbilang perpustakaan dari lokasi berbeza menyumbang subpakej kepada ibu bapa pakej . Sebagai contoh, katakan terdapat dua perpustakaan google_pubsub dan google_storage, yang menyediakan struktur berikut:

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
Salin selepas log masuk

Dalam kes ini, direktori google/ dan google/cloud/ mestilah pakej ruang nama, supaya google_pubsub dan The pakej google_storage dianggap sebagai subpakej di bawah pakej induk yang sama.

Kesimpulan:

  • Terdapat dua jenis pakej Python berikut:

    • Pakej ruang nama (pakej tersirat ): Tiada fail __init__.py diperlukan, digunakan untuk menyumbang kandungan berbilang perpustakaan kepada pakej induk.
    • Pakej biasa (pakej eksplisit): Memerlukan fail __init__.py untuk mengenal pasti pakej dan hanya mengandungi kandungan direktori semasa.
  • Bagi kebanyakan kes, ia masih disyorkan untuk menggunakan pakej biasa (iaitu pakej dengan fail __init__.py) kerana ia lebih ringkas dan mudah difahami.
  • Fail __init__.py tidak boleh digunakan hanya dalam kes tertentu di mana pakej ruang nama perlu dibuat.

Atas ialah kandungan terperinci Adakah `__init__.py` Masih Diperlukan untuk Pakej Python dalam Versi 3.3 ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan