Rumah >pembangunan bahagian belakang >Tutorial Python >Adakah Python 3.3 Menghapuskan Keperluan untuk __init__.py dalam Pakej?

Adakah Python 3.3 Menghapuskan Keperluan untuk __init__.py dalam Pakej?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 06:54:09386semak imbas

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

Adakah __init__.py tidak diperlukan untuk pakej dalam Python 3.3 ?

Python 3.3 dan versi yang lebih baru memperkenalkan konsep pakej ruang nama. Ciri ini membolehkan anda mencipta pakej tanpa fail __init__.py.

Pakej Ruang Nama lwn. Pakej Biasa

  • Pakej Ruang Nama: Tidak mempunyai fail __init__.py, membenarkan berbilang modul menyumbang kepada pakej yang sama merentas direktori berbeza.
  • Pakej biasa: Mempunyai fail __init__.py, menjadikannya serba lengkap dan mengasingkan modulnya kepada satu hierarki direktori.

< ;h2>Bila Menggunakan Ruang Nama Packages

Kes penggunaan utama untuk pakej ruang nama ialah apabila anda mempunyai berbilang perpustakaan yang tinggal di lokasi yang berbeza dan mahu mereka menyumbang subpakej kepada pakej induk.

Sebagai contoh:

google_pubsub/ <- Pakej 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/ <- Pakej 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

Dalam contoh ini, kedua-dua google_pubsub dan google_storage berkongsi ruang nama google/cloud yang sama. Ini membolehkan anda mengimport modul dari mana-mana pustaka tanpa menyediakan laluan penuh.

Pakej Biasa

Untuk kebanyakan kes penggunaan, cipta pakej biasa dengan fail __init__.py masih merupakan pendekatan yang disyorkan. Ini menyediakan kawalan diri dan menghalang kemungkinan konflik ruang nama.

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

Kenyataan:
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