Adakah ia tidak diperlukan lagi dalam Python 3.3 ? Sediakan fail __init__.py untuk pakej?
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
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:
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!