โมดูล คือไฟล์ .py เดียว แพ็กเก็จ คือไดเรกทอรีของโมดูล การนำเข้า ให้คุณสามารถใช้โค้ดจากโมดูลอื่น ๆ ซึ่งจัดระเบียบโปรแกรมให้เป็นส่วนที่ใช้ซ้ำได้
โมดูลและการนำเข้า
(): a + b
PI =
# main.py — different ways to import
import math_utils # import the whole module
math_utils.add(2, 3) # access via the module name
from math_utils import add, PI # import specific names
add(2, 3) # use directly
from math_utils import add as plus # import with an alias
import numpy as np # common aliasing convention
mypackage/
__init__.py ← marks it as a package (can be empty)
module_a.py
subpackage/
__init__.py
module_b.py
from mypackage.module_a import something
from mypackage.subpackage.module_b import other
ไฟล์ __init__.py ทำเครื่องหมายไดเรกทอรีเป็นแพ็กเก็จ (และสามารถเรียกใช้โค้ดการเริ่มต้นแพ็กเก็จหรือกำหนดสิ่งที่ from package import * นำเสนออยู่)
if __name__ == "__main__"def main():
print("running as a script")
if __name__ == "__main__": # True only when run directly, not when imported
main()
สิ่งนี้ให้ไฟล์ทำหน้าที่เป็นทั้งโมดูลที่นำเข้าได้ และ สคริปต์ที่รันได้ — โค้ดใต้นั้นทำงานเฉพาะเมื่อไฟล์ทำงานโดยตรง (python file.py) ไม่ใช่เมื่อนำเข้า สำนวน Python สากลเกือบ
import sys
sys.path # the list of directories Python searches for imports
# includes: the current directory, installed packages (site-packages), stdlib
import os, json, datetime # standard library — "batteries included"
import requests # third-party — installed via pip from PyPI
โมดูลและแพ็กเก็จเป็นวิธีที่คุณจัดระเบียบโค้ด Python ให้เป็นหน่วยที่ใช้ซ้ำได้และดำเนินการได้ แทนที่จะเป็นไฟล์ขนาดใหญ่เพียงไฟล์เดียว — เป็นพื้นฐานสำหรับโครงการที่ไม่ธรรมดา
การทำความเข้าใจรูปแบบการนำเข้า โครงสร้างแพ็กเก็จ (__init__.py) สำนวน if __name__ == "__main__" (พฤติกรรมสคริปต์/โมดูลคู่) และวิธีที่ Python ค้นหาโมดูล (sys.path) เป็นสิ่งจำเป็นสำหรับการสร้างโครงการ การนำโค้ดกลับมาใช้ใหม่ และใช้ห้องสมุดมาตรฐานและระบบนิเวศ PyPI ที่กว้างขวาง
ข้อผิดพลาดการนำเข้าและความสับสนในโครงสร้างเป็นอุปสรรคในช่วงแรกทั่วไป ซึ่งความรู้นี้จะแก้ไข