Python Academy · Pelajaran

Pakej dan __init__.py

Susun modul ke dalam pakej dengan struktur direktori yang betul.

Pelajaran 3 daripada 413 langkah

Pakej dan __init__.py ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah Itu Pakej?

Pakej ialah direktori yang mengandungi fail __init__.py dan satu atau lebih modul. Python menganggap mana-mana direktori sedemikian sebagai pakej yang boleh anda import.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

Fail __init__.py

__init__.py dijalankan apabila pakej diimport. Fail ini boleh kosong atau mendedahkan nama terpilih kepada pemanggil.

# mypackage/__init__.py
from .utils import helper
from .math_helpers import add

Mengimport daripada Pakej

Gunakan tatatanda titik untuk mengimport submodul atau nama yang ditakrifkan dalam __init__.py.

import mypackage
from mypackage import helper
from mypackage.math_helpers import add
print(add(2, 3))

Subpakej

Pakej boleh bersarang: subdirektori dengan __init__.py sendiri menjadi subpakej.

mypackage/
    __init__.py
    network/
        __init__.py
        http.py

Import Relatif

Dalam pakej, gunakan import relatif dengan titik di hadapan untuk merujuk modul setara tanpa menetapkan nama pakej secara keras.

# mypackage/network/http.py
from ..utils import helper   # two levels up

Import Mutlak berbanding Relatif

Import mutlak tidak mengelirukan dan lebih disarankan. Import relatif berguna dalam pakej besar untuk mengelakkan nama yang panjang.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ dalam __init__.py

Takrifkan __all__ untuk mengawal perkara yang dieksport oleh from package import *.

# mypackage/__init__.py
__all__ = ['helper', 'add']
from .utils import helper
from .math_helpers import add

Pakej Ruang Nama (PEP 420)

Python 3.3+ menyokong pakej ruang nama — direktori tanpa __init__.py. Berguna untuk membahagikan satu pakej merentasi beberapa direktori.

# No __init__.py needed
# Just have the directory and import normally
import myns.module

Permulaan __init__ Pakej

Gunakan __init__.py untuk menetapkan pemalar peringkat pakej, mengkonfigurasi pengelogan atau memuatkan submodul berat secara malas.

# mypackage/__init__.py
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
VERSION = '1.0.0'

Mengedarkan Pakej

Tambahkan pyproject.toml atau setup.py supaya pakej anda boleh dipasang dengan pip.

# pyproject.toml excerpt
[project]
name = "mypackage"
version = "1.0.0"

# Install locally
# pip install -e .

Memeriksa Atribut Pakej

Gunakan __file__, __path__ dan __name__ untuk memeriksa metadata pakej semasa masa jalan.

import mypackage
print(mypackage.__file__)   # path to __init__.py
print(mypackage.__path__)   # list of directory paths
print(mypackage.__name__)   # 'mypackage'

Semakan Pantas

Fail manakah yang menjadikan direktori sebagai pakej Python?

Imbas Kembali

Pakej menyusun modul ke dalam direktori menggunakan __init__.py. Gunakan import mutlak untuk kejelasan, import relatif dalam pakej dan __all__ untuk mengawal API awam.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “Pakej dan __init__.py” percuma?

Ya — teks penuh “Pakej dan __init__.py” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pakej dan __init__.py”?

Susun modul ke dalam pakej dengan struktur direktori yang betul. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pakej dan __init__.py” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mencipta dan Mengimport Modul
  2. Pustaka Standard Python
  3. Pakej dan __init__.py
  4. Memasang Pakej dengan pip
← Kembali ke Python Academy