แพ็กเกจและ __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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างและนำเข้าโมดูล
- ไลบรารีมาตรฐานของ Python
- แพ็กเกจและ __init__.py
- การติดตั้งแพ็กเกจด้วย pip