0Pricing
Python Academy · บทเรียน

แพ็กเกจและ __init__.py

จัดระเบียบโมดูลเป็นแพ็กเกจด้วยโครงสร้างไดเรกทอรีที่เหมาะสม

แพ็กเกจและ __init__.py เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

แพ็กเกจคืออะไร

แพ็กเกจ คือไดเรกทอรีที่มีไฟล์ __init__.py และโมดูลอย่างน้อยหนึ่งโมดูล Python จะถือว่าไดเรกทอรีลักษณะนี้เป็นแพ็กเกจที่คุณสามารถนำเข้าได้

mypackage/
    __init__.py
    utils.py
    math_helpers.py

ไฟล์ __init__.py

__init__.py จะทำงานเมื่อมีการนำเข้าแพ็กเกจ ไฟล์นี้อาจว่างเปล่าหรือใช้เปิดเผยชื่อที่เลือกไว้ให้ผู้เรียกใช้ได้

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

การนำเข้าจากแพ็กเกจ

ใช้สัญลักษณ์จุดเพื่อนำเข้าโมดูลย่อยหรือชื่อที่กำหนดไว้ใน __init__.py

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

แพ็กเกจย่อย

แพ็กเกจสามารถซ้อนกันได้ โดยไดเรกทอรีย่อยที่มี __init__.py ของตัวเองจะกลายเป็นแพ็กเกจย่อย

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

การนำเข้าแบบสัมพัทธ์

ภายในแพ็กเกจ ให้ใช้การนำเข้าแบบสัมพัทธ์ที่มีจุดนำหน้าเพื่ออ้างอิงโมดูลพี่น้อง โดยไม่ต้องเขียนชื่อแพ็กเกจแบบตายตัว

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

การนำเข้าแบบสัมบูรณ์เทียบกับแบบสัมพัทธ์

การนำเข้าแบบสัมบูรณ์ไม่กำกวมและเป็นรูปแบบที่แนะนำ ส่วนการนำเข้าแบบสัมพัทธ์มีประโยชน์ภายในแพ็กเกจขนาดใหญ่เพื่อหลีกเลี่ยงชื่อที่ยาว

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ ใน __init__.py

กำหนด __all__ เพื่อควบคุมสิ่งที่ from package import * ส่งออก

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

แพ็กเกจเนมสเปซ (PEP 420)

Python 3.3 ขึ้นไปรองรับแพ็กเกจเนมสเปซ ซึ่งเป็นไดเรกทอรีที่ไม่มี __init__.py เหมาะสำหรับการแบ่งแพ็กเกจออกเป็นหลายไดเรกทอรี

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

การเริ่มต้นแพ็กเกจด้วย __init__

ใช้ __init__.py เพื่อกำหนดค่าคงที่ระดับแพ็กเกจ ตั้งค่าการบันทึกล็อก หรือโหลดโมดูลย่อยขนาดใหญ่เมื่อจำเป็น

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

การแจกจ่ายแพ็กเกจ

เพิ่ม pyproject.toml หรือ setup.py เพื่อทำให้แพ็กเกจของคุณติดตั้งได้ด้วย pip

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

# Install locally
# pip install -e .

การตรวจสอบแอตทริบิวต์ของแพ็กเกจ

ใช้ __file__, __path__ และ __name__ เพื่อตรวจสอบข้อมูลเมตาของแพ็กเกจขณะทำงาน

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

ตรวจสอบความเข้าใจ

ไฟล์ใดทำให้ไดเรกทอรีกลายเป็นแพ็กเกจ Python

สรุปทบทวน

แพ็กเกจช่วยจัดระเบียบโมดูลไว้ในไดเรกทอรีโดยใช้ __init__.py ใช้การนำเข้าแบบสัมบูรณ์เพื่อความชัดเจน ใช้การนำเข้าแบบสัมพัทธ์ภายในแพ็กเกจ และใช้ __all__ เพื่อควบคุมส่วนติดต่อสาธารณะ

คำถามที่พบบ่อย

บทเรียน “แพ็กเกจและ __init__.py” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แพ็กเกจและ __init__.py” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แพ็กเกจและ __init__.py”

จัดระเบียบโมดูลเป็นแพ็กเกจด้วยโครงสร้างไดเรกทอรีที่เหมาะสม คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “แพ็กเกจและ __init__.py” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างและนำเข้าโมดูล
  2. ไลบรารีมาตรฐานของ Python
  3. แพ็กเกจและ __init__.py
  4. การติดตั้งแพ็กเกจด้วย pip
← กลับไปที่ Python Academy