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.