Rumah >pembangunan bahagian belakang >Tutorial Python >Adakah Python 3.3 Menghapuskan Keperluan untuk __init__.py dalam Pakej?
Python 3.3 dan versi yang lebih baru memperkenalkan konsep pakej ruang nama. Ciri ini membolehkan anda mencipta pakej tanpa fail __init__.py.
< ;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.
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!