Memahami Perbezaan Antara Modul dan Pakej dalam Python
Tidak seperti kebanyakan bahasa pengaturcaraan lain, Python membezakan antara modul dan pakej. Pemahaman yang jelas tentang perbezaan mereka adalah penting untuk pengekodan Python yang berkesan.
Definisi Modul
Modul dalam Python tidak lebih daripada satu fail Python. Ia pada asasnya adalah koleksi kod yang ditakrifkan dalam fail tertentu itu. Sebagai contoh, fail bernama "my_module.py" akan mentakrifkan modul yang dikenali sebagai "my_module." Modul membantu menyusun kod ke dalam unit logik dan membolehkan pengimportan dan penggunaan semula kod tersebut dalam skrip Python yang lain.
Definisi Pakej
Sebaliknya, pakej mewakili koleksi modul dan sub-pakej. Ia diwakili oleh direktori yang mengandungi berbilang modul Python. Selain itu, fail bernama "__init__.py" diperlukan dalam direktori pakej untuk membezakannya daripada direktori biasa yang menempatkan skrip Python. Pakej mungkin bersarang pada tahap yang berbeza, asalkan setiap direktori termasuk fail "__init__.py" sendiri.
Perbezaan Antara Modul dan Pakej
Semasa modul wujud sebagai fail Python tunggal, pakej membentuk direktori modul Python. Perbezaan ini, bagaimanapun, hanya terpakai pada peringkat sistem fail. Apabila mengimport sama ada modul atau pakej, objek Python yang dihasilkan sentiasa daripada jenis "modul."
Satu perbezaan ketara ialah mengimport pakej hanya menjadikan pembolehubah, fungsi dan kelas ditakrifkan dalam "__init__nya. py" fail tersedia secara langsung. Subpakej dan modul dalam pakej kekal tidak boleh diakses melalui import langsung.
Contoh
Pertimbangkan pakej xml perpustakaan standard Python sebagai ilustrasi. Direktori xmlnya menyimpan fail "__init__.py" dan empat sub-direktori. Salah satu daripada sub-direktori ini, etree, mengandungi fail "__init__.py" dan fail yang dipanggil ElementTree.py.
Mengimport pelbagai komponen akan menghasilkan hasil berikut:
import xml type(xml) # <type 'module'> xml.etree.ElementTree # AttributeError: 'module' object has no attribute 'etree' import xml.etree type(xml.etree) # <type 'module'> xml.etree.ElementTree # AttributeError: 'module' object has no attribute 'ElementTree' import xml.etree.ElementTree type(xml.etree.ElementTree) # <type 'module'> xml.etree.ElementTree.parse # <function parse at 0x00B135B0>
Daripada contoh ini, anda boleh melihat bahawa hanya selepas mengimport subpakej atau modul (xml.etree.ElementTree) secara eksplisit, anda boleh akses kandungannya.
Nota: Python juga menawarkan modul terbina dalam yang dilaksanakan dalam C (cth., sys). Walau bagaimanapun, ini berada di luar skop pertanyaan anda.
Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara Modul dan Pakej Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!