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для питань «що найменше» або «що найбільш пріоритетне», побудованих на звичайному списку. Кожен із них заповнює прогалину, яку залишають чотири основні типи контейнерів.Інструменти повсякденного робочого процесу – компrehензії для побудови колекцій із наявних, генератори та протокол ітератора для лінивої обробки даних, декоратори та контекстні менеджери для обгортання типових шаблонів отримання/звільнення ресурсів та дій до/після, і звички налагодження (читання зворотних трасувань,
repr(),dir(),help(), модульlogging), які перетворюють зламаний скрипт на виправлений.
2.42.1. Використання цього посібника надалі¶
Ставтеся до посібника як до довідкового матеріалу, а не до тексту для одноразового читання. Розділи навмисно короткі; повернення для освіження знань про зрізи, контекстні менеджери або компrehензії — це передбачений спосіб використання. Зробіть закладку на розділ, до якого звертаєтеся найчастіше.
Якщо пізніше в документації до камери згадується концепція Python, яку ви не впізнаєте — наприклад, «це повертає контекстний менеджер» або «ітеруйте результат» — відповідна сторінка посібника є відправною точкою.
2.42.2. Що робити далі¶
Базове керування апаратним забезпеченням безпосередньо спирається на знайомий вам Python. Якщо посібник жив у пам’яті, то керування апаратним забезпеченням живе у фізичному світі — напруга на виводах, імпульси на дротах, байти, тактовані по шинах до інших мікросхем. Набір інструментів зміщується до модуля machine та тонкого шару електроніки. Все з посібника залишається актуальним; вам не доведеться знову вивчати def або with або чим bytearray відрізняється від bytes.
Якщо в матеріалах про апаратне забезпечення ви натрапите на функцію Python, що здається незнайомою, цей посібник — місце, куди варто повернутися.