2.18. Sử dụng modules¶
Một module là tập hợp mã Python -- hàm, lớp, hằng số -- được đóng gói để có thể tái sử dụng trên nhiều tập lệnh. Python đi kèm với thư viện chuẩn đầy đủ chúng, và firmware OpenMV thêm nhiều hơn để giao tiếp với camera. Truy cập vào một module được thực hiện bằng import.
2.18.1. import¶
Dạng trực tiếp nhất đưa toàn bộ module vào dưới tên của nó:
import math
print(math.sqrt(2))
Đầu ra:
1.4142135623730951
Sau import, mọi tên được định nghĩa bởi math đều có thể truy cập bằng math.<name>. Tên module đến từ tên tệp của nó (không có .py); tiền tố không gian tên ngăn hai module có cùng tên hàm va chạm nhau.
2.18.2. from ... import¶
Để đưa các tên cụ thể trực tiếp vào phạm vi hiện tại, dùng from:
from math import sqrt, pi
print(sqrt(2), pi)
Đầu ra:
1.4142135623730951 3.141592653589793
Không còn tiền tố không gian tên nữa. Điều này thuận tiện cho các tên được dùng nhiều, nhưng một from import đưa vào nhiều tên làm khó biết mỗi tên đến từ đâu. import math thông thường thường rõ ràng hơn trong các tập lệnh lớn hơn.
Dạng dấu sao from math import * đưa vào tất cả những gì module xuất. Bỏ qua nó -- nó làm ô nhiễm không gian tên và gây rắc rối cho tính năng tự động hoàn thành của IDE.
2.18.3. Đặt bí danh với as¶
Tên module dài có thể được rút ngắn với as:
import json as j
j.dumps({"ok": True})
Mẹo tương tự hoạt động trên các tên riêng lẻ được import với from:
from math import sqrt as root
root(9) # 3.0
Đối với mã Python chung, chỉ đặt bí danh khi tên gốc thực sự dài hoặc va chạm với thứ gì đó khác đã có trong phạm vi.
2.18.4. Các module có sẵn¶
Tài liệu tham khảo thư viện liệt kê mọi module được tích hợp trên camera -- thư viện chuẩn MicroPython và các module đặc thù cho OpenMV điều khiển cảm biến ảnh, chạy thị giác máy, và kiểm soát phần cứng trên bo mạch. Tất cả đều sử dụng cùng cơ chế import được trình bày ở trên.