2.42. Tổng kết

Bạn đã đi qua các phần Python xuất hiện thường xuyên khi viết tập lệnh cho OpenMV Cam:

  • Nền tảng ngôn ngữ -- giá trị và biến, số học và so sánh, chuỗi và bytes, bốn bộ sưu tập cốt lõi (list, tuple, dict, set), điều kiện và vòng lặp, định nghĩa hàm và quản lý đối số và phạm vi, định nghĩa lớp và dùng kế thừa, raise và xử lý ngoại lệ. Đây là những viên gạch xây dựng mọi thứ khác trong Python.

  • Các phần cấu trúc -- chia code qua các module và package, import những gì bạn cần, đọc và ghi tệp với with, trao đổi dữ liệu có cấu trúc qua json, và đóng gói bản ghi nhị phân qua struct với thứ tự byte và trường số nguyên chiều rộng cố định. Những điều này xuất hiện ngay khi tập lệnh lớn hơn một tệp hay cần giao tiếp với thứ gì đó bên ngoài.

  • Các phần thay đổi hành vi trên runtime bị hạn chế -- tại sao MicroPython dùng số thực 32-bit và cách so sánh chúng đáng tin cậy, cách bộ thu gom rác cấp phát và thu hồi các khối, tại sao phân mảnh quan trọng trên heap nhỏ, và cách cấp phát trước giúp các tập lệnh chạy dài hoạt động tốt. Thói quen lập trình trên máy tính để bàn đôi khi gây hiểu nhầm ở đây; tài liệu này cung cấp mô hình tư duy đúng cho code chạy trên thiết bị.

  • Các công cụ introspection và dynamic-code -- id(), hash(), isinstance(), issubclass(), callable(), globals(), locals() để nhìn vào các giá trị và môi trường; eval() / exec() / compile() cho những trường hợp hiếm hoi khi sinh code lúc runtime là câu trả lời đúng. Hầu hết các tập lệnh không bao giờ dùng đến những thứ này, nhưng biết chúng tồn tại (và khi nào không nên dùng) là một phần của việc đọc code Python của người khác.

  • Khớp mẫu trên văn bản -- module re cho các chuỗi có dạng bạn có thể mô tả nhưng không thể liệt kê. Lớp ký tự, định lượng, nhóm bắt giữ, neo, và sự đánh đổi giữa greedy và lazy, cùng với những điểm cụ thể tập con MicroPython dừng lại trước CPython. Dùng khi str.find hoặc str.split không còn đáp ứng được.

  • Container ngoài các kiểu tích hợp -- collections.namedtuple() cho bản ghi có kiểu, collections.deque cho bộ đệm vòng có giới hạn và cửa sổ trượt, collections.OrderedDict khi thứ tự chèn là một phần của phép bằng, và heapq cho các câu hỏi "cái nhỏ nhất là gì" hoặc "cái khẩn cấp nhất là gì" xây dựng trên danh sách thông thường. Mỗi thứ lấp đầy khoảng trống mà bốn kiểu container cốt lõi để lại.

  • Các công cụ quy trình hàng ngày -- comprehension để xây dựng collection từ các collection hiện có, generator và giao thức iterator để xử lý dữ liệu một cách lazy, decorator và context manager để bọc các mẫu acquire/release và before/after phổ biến, và các thói quen gỡ lỗi (đọc traceback, repr(), dir(), help(), module logging) biến một tập lệnh lỗi thành tập lệnh hoạt động.

2.42.1. Sử dụng tài liệu này sau

Hãy coi tài liệu tóm tắt này như tài liệu tham khảo, không phải đọc một lần. Các chương ngắn là có chủ ý; quay lại ôn về cắt lát, context manager hay comprehension là cách sử dụng dự kiến. Hãy đánh dấu phần bạn tra cứu nhiều nhất.

Nếu sau này tài liệu camera đề cập đến một khái niệm Python bạn chưa nhận ra -- chẳng hạn, "hàm này trả về một context manager" hoặc "duyệt kết quả" -- trang tài liệu tóm tắt tương ứng là nơi bắt đầu.

2.42.2. Tiếp theo là gì

Điều khiển phần cứng cơ bản được xây dựng trực tiếp trên Python bạn đã biết. Nếu tài liệu tóm tắt sống trong bộ nhớ, điều khiển phần cứng sống trong thế giới vật lý -- điện áp trên các chân (pin), xung trên dây, byte được truyền qua bus đến các chip khác. Bộ công cụ chuyển sang module machine và một lớp mỏng về điện tử. Tất cả từ tài liệu tóm tắt đều được áp dụng; bạn sẽ không học lại def hay with hay bytearray khác bytes như thế nào.

Khi bạn gặp tính năng Python không quen trong tài liệu phần cứng, đây là nơi để quay lại.