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 เดียวกับที่แสดงไว้ข้างต้น