2.42. Подведение итогов¶
Вы прошли по тем частям Python, которые постоянно встречаются при написании скриптов для OpenMV Cam:
Основы языка – значения и переменные, арифметика и сравнение, строки и байты, четыре основных коллекции (
list,tuple,dict,set), условия и циклы, определение функций и управление их аргументами и областью видимости, определение классов и использование наследования, возбуждение и обработка исключений. Это кирпичики, из которых строится всё остальное в Python.Структурные элементы – разделение кода на модули и пакеты, импорт того, что вам нужно, чтение и запись файлов с помощью
with, обмен структурированными данными черезjsonи упаковка двоичных записей черезstructс порядком байтов и целочисленными полями фиксированной ширины. Они появляются в тот момент, когда скрипт вырастает за пределы одного файла или ему нужно общаться с чем-то внешним.Части, которые меняют форму на ограниченной среде выполнения – почему числа с плавающей точкой в MicroPython 32-битные и как их надёжно сравнивать, как сборщик мусора выдаёт и освобождает блоки, почему фрагментация важна на небольшой куче и как предварительное выделение памяти сохраняет хорошее поведение долго работающих скриптов. Привычки с настольных систем здесь иногда вводят в заблуждение; этот материал даёт вам правильную ментальную модель для кода, который живёт на устройстве.
Инструменты интроспекции и динамического кода –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()для рассмотрения значений и окружения;eval()/exec()/compile()для редких случаев, когда генерация кода во время выполнения – правильный ответ. Большинство скриптов никогда их не используют, но знание об их существовании (и о том, когда к ним не стоит прибегать) – часть умения читать чужой код на Python.Сопоставление с образцом для текста – модуль
reдля строк, форму которых вы можете описать, но не можете перечислить. Классы символов, квантификаторы, захватывающие группы, якоря и компромисс между жадным и ленивым сопоставлением, а также конкретные места, где подмножество MicroPython не дотягивает до CPython. Обращайтесь к нему, когда возможностейstr.findилиstr.splitуже не хватает.Контейнеры за пределами встроенных –
collections.namedtuple()для типизированных записей,collections.dequeдля ограниченных кольцевых буферов и скользящих окон,collections.OrderedDict, когда порядок вставки является частью равенства, иheapqдля вопросов «что наименьшее» или «что самое срочное», построенных на обычном списке. Каждый из них заполняет пробел, который оставляют четыре основных типа контейнеров.Инструменты повседневной работы – генераторы коллекций (comprehensions) для построения коллекций из существующих, генераторы и протокол итераторов для ленивой обработки данных, декораторы и менеджеры контекста для оборачивания распространённых паттернов захвата/освобождения и до/после, а также навыки отладки (чтение трассировок,
repr(),dir(),help(), модульlogging), которые превращают сломанный скрипт в исправленный.
2.42.1. Использование этого учебника в дальнейшем¶
Относитесь к учебнику как к справочному материалу, а не как к чтению за один проход. Главы намеренно короткие; возвращаться, чтобы освежить знания о срезах, менеджерах контекста или генераторах коллекций – это и есть задуманное использование. Добавьте в закладки раздел, к которому обращаетесь чаще всего.
Если что-то в документации камеры позже ссылается на концепцию Python, которую вы не узнаёте – скажем, «это возвращает менеджер контекста» или «проитерируйте результат» – соответствующая страница учебника – это место, с которого стоит начать.
2.42.2. Куда двигаться дальше¶
Базовое управление оборудованием строится непосредственно на том Python, который вы теперь знаете. Если учебник жил в памяти, то управление оборудованием живёт в физическом мире – напряжения на выводах, импульсы на проводах, байты, передаваемые по шинам на другие микросхемы. Инструментарий смещается к модулю machine и тонкому слою электроники. Всё из учебника переносится дальше; вам не придётся заново учить def или with или то, чем bytearray отличается от bytes.
Когда вы столкнётесь с возможностью Python, которая покажется незнакомой в материале по оборудованию, этот учебник – то место, куда стоит вернуться.