2.42. Afronding¶
Je hebt de onderdelen van Python doorlopen die voortdurend van pas komen bij het schrijven van scripts voor de OpenMV Cam:
De taalfundamenten – waarden en variabelen, rekenkunde en vergelijking, strings en bytes, de vier kerncollecties (
list,tuple,dict,set), voorwaarden en lussen, het definiëren van functies en het beheren van hun argumenten en scope, het definiëren van klassen en het gebruik van overerving, het opwerpen en afhandelen van uitzonderingen. Dit zijn de bouwstenen waaruit elk ander stuk Python is opgebouwd.De structurele onderdelen – het verdelen van code over modules en pakketten, het importeren van wat je nodig hebt, het lezen en schrijven van bestanden met
with, het uitwisselen van gestructureerde gegevens viajson, en het inpakken van binaire records viastructmet endianness en velden van gehele getallen met vaste breedte. Deze duiken op zodra een script groter wordt dan een enkel bestand of met iets buiten zichzelf moet communiceren.De onderdelen die van vorm veranderen op een beperkte runtime – waarom MicroPython-floats 32-bits zijn en hoe je ze betrouwbaar vergelijkt, hoe de garbage collector blokken uitdeelt en terugwint, waarom fragmentatie ertoe doet op een kleine heap, en hoe pre-allocatie langlopende scripts goed gedraagd houdt. Desktopgewoonten misleiden je hier soms; dit materiaal geeft je het juiste mentale model voor code die op het apparaat draait.
De introspectie- en dynamische-code-hulpmiddelen –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()om naar waarden en de omgeving te kijken;eval()/exec()/compile()voor de zeldzame gevallen waarin het genereren van code tijdens runtime het juiste antwoord is. De meeste scripts raken deze nooit aan, maar weten dat ze bestaan (en wanneer je er niet naar moet grijpen) maakt deel uit van het lezen van andermans Python.Patroonherkenning op tekst – de module
revoor strings waarvan je de vorm kunt beschrijven maar niet kunt opsommen. Tekenklassen, kwantoren, vastleggende groepen, ankers en de afweging tussen gulzig en lui, samen met de specifieke plekken waar MicroPythons subset achterblijft bij CPython. Grijp ernaar wanneerstr.findofstr.splittekortschiet.Containers voorbij de ingebouwde –
collections.namedtuple()voor getypeerde records,collections.dequevoor begrensde ringbuffers en voortschuivende vensters,collections.OrderedDictwanneer de invoegvolgorde deel uitmaakt van gelijkheid, enheapqvoor vragen als “wat is de kleinste” of “wat is het meest urgent”, gebouwd op een gewone list. Elk vult een leemte op die de vier kerncontainertypen achterlaten.De dagelijkse workflow-hulpmiddelen – comprehensions voor het bouwen van collecties uit bestaande, generators en het iteratorprotocol voor het lui verwerken van gegevens, decorators en context managers voor het inkapselen van veelvoorkomende acquire/release- en before/after-patronen, en de debug-gewoonten (het lezen van tracebacks,
repr(),dir(),help(), de modulelogging) die een kapot script in een gerepareerd veranderen.
2.42.1. Deze inleiding later gebruiken¶
Beschouw de inleiding als naslagmateriaal, niet als een eenmalige lezing. De hoofdstukken zijn met opzet kort; terugkomen om je geheugen op te frissen over slicen of context managers of comprehensions is het bedoelde gebruik. Maak een bladwijzer van de sectie waar je het vaakst naar grijpt.
Als iets in de documentatie van de camera later verwijst naar een Python-concept dat je niet herkent – bijvoorbeeld “dit geeft een context manager terug” of “itereer over het resultaat” – dan is de bijbehorende inleidingspagina de plek om te beginnen.
2.42.2. Waar nu verder te gaan¶
Basishardwarebediening bouwt rechtstreeks voort op de Python die je nu kent. Waar de inleiding in het geheugen leefde, leeft hardwarebediening in de fysieke wereld – spanningen op pinnen, pulsen op draden, bytes die over bussen naar andere chips worden geklokt. De gereedschapskist verschuift naar de module machine en een dunne laag elektronica. Alles uit de inleiding gaat mee; je hoeft def of with niet opnieuw te leren, of hoe bytearray verschilt van bytes.
Wanneer je in het hardwaremateriaal een Python-functie tegenkomt die onbekend aanvoelt, is deze inleiding de plek om naar terug te keren.