2.18. การใช้งานโมดูล¶
โมดูล คือคอลเล็กชันของโค้ด Python -- ฟังก์ชัน, คลาส, ค่าคงที่ -- ที่บรรจุไว้เพื่อนำไปใช้ซ้ำในหลายสคริปต์ Python มาพร้อมกับ standard library ที่เต็มไปด้วยโมดูล และเฟิร์มแวร์ OpenMV เพิ่มโมดูลอีกเพื่อสื่อสารกับกล้อง การเข้าถึงโมดูลทำได้ด้วย import
2.18.1. import¶
รูปแบบตรงที่สุดดึงโมดูลทั้งหมดภายใต้ชื่อของมันเอง:
import math
print(math.sqrt(2))
ผลลัพธ์:
1.4142135623730951
หลังจาก import ทุกชื่อที่กำหนดโดย math สามารถเข้าถึงได้เป็น math.<name> ชื่อโมดูลมาจากชื่อไฟล์ (ไม่รวม .py); คำนำหน้า namespace ป้องกันไม่ให้สองโมดูลที่มีชื่อฟังก์ชันเดียวกันชนกัน
2.18.2. from ... import¶
เพื่อดึงชื่อเฉพาะเข้ามาใน scope ปัจจุบันโดยตรง ให้ใช้ from:
from math import sqrt, pi
print(sqrt(2), pi)
ผลลัพธ์:
1.4142135623730951 3.141592653589793
ไม่มีคำนำหน้า namespace อีกต่อไป วิธีนี้สะดวกสำหรับชื่อที่ใช้บ่อย แต่ from import ที่นำชื่อจำนวนมากมาทำให้ยากขึ้นที่จะบอกว่าชื่อแต่ละชื่อมาจากไหน import math แบบธรรมดามักจะชัดเจนกว่าในสคริปต์ขนาดใหญ่
รูปแบบ star from math import * นำ ทุกอย่าง ที่โมดูล export เข้ามา อย่าใช้มัน -- มันทำให้ namespace รกและขัดขวาง autocomplete ของ IDE
2.18.3. การตั้งชื่อแทนด้วย as¶
ชื่อโมดูลยาวสามารถย่อด้วย as:
import json as j
j.dumps({"ok": True})
เทคนิคเดียวกันใช้ได้กับชื่อแต่ละชื่อที่ import ด้วย from:
from math import sqrt as root
root(9) # 3.0
สำหรับโค้ด Python ทั่วไป ให้ตั้งชื่อแทนเฉพาะเมื่อชื่อเดิมยาวจริงๆ หรือขัดแย้งกับสิ่งอื่นที่อยู่ใน scope แล้ว
2.18.4. โมดูลที่มีอยู่¶
library reference ระบุทุกโมดูลที่มาพร้อมกับกล้อง -- MicroPython standard library และโมดูลเฉพาะของ OpenMV ที่ขับเคลื่อน image sensor, รัน machine vision, และควบคุมฮาร์ดแวร์บนบอร์ด ทุกโมดูลใช้กลไก import เดียวกับที่แสดงไว้ข้างต้น