2.42. Zusammenfassung

Sie haben die Teile von Python durchlaufen, die beim Schreiben von Skripten für die OpenMV Cam ständig vorkommen:

  • Die Sprachgrundlagen – Werte und Variablen, Arithmetik und Vergleich, Strings und Bytes, die vier zentralen Collections (list, tuple, dict, set), Bedingungen und Schleifen, das Definieren von Funktionen sowie die Verwaltung ihrer Argumente und ihres Gültigkeitsbereichs, das Definieren von Klassen und die Verwendung von Vererbung, das Auslösen und Behandeln von Ausnahmen. Das sind die Bausteine, aus denen jeder andere Teil von Python aufgebaut ist.

  • Die strukturellen Bausteine – das Aufteilen von Code auf Module und Pakete, das Importieren dessen, was Sie benötigen, das Lesen und Schreiben von Dateien mit with, der Austausch strukturierter Daten über json und das Packen binärer Datensätze über struct mit Endianness und Feldern fester Breite für Ganzzahlen. Diese tauchen in dem Moment auf, in dem ein Skript über eine einzelne Datei hinauswächst oder mit etwas außerhalb seiner selbst kommunizieren muss.

  • Die Teile, die auf einer eingeschränkten Laufzeitumgebung ihre Form ändern – warum MicroPython-Floats 32-Bit sind und wie man sie zuverlässig vergleicht, wie der Garbage Collector Blöcke ausgibt und zurückgewinnt, warum Fragmentierung auf einem kleinen Heap eine Rolle spielt und wie Vorab-Allozierung dauerhaft laufende Skripte gutmütig hält. Desktop-Gewohnheiten führen hier manchmal in die Irre; dieses Material gibt Ihnen das richtige mentale Modell für Code, der auf dem Gerät lebt.

  • Die Introspektions- und Werkzeuge für dynamischen Codeid(), hash(), isinstance(), issubclass(), callable(), globals(), locals(), um Werte und die Umgebung zu betrachten; eval() / exec() / compile() für die seltenen Fälle, in denen das Erzeugen von Code zur Laufzeit die richtige Antwort ist. Die meisten Skripte rühren diese nie an, aber zu wissen, dass es sie gibt (und wann man nicht zu ihnen greifen sollte), ist Teil des Lesens fremden Python-Codes.

  • Mustererkennung in Text – das Modul re für Strings, deren Form Sie beschreiben, aber nicht aufzählen können. Zeichenklassen, Quantoren, einfangende Gruppen, Anker und der Kompromiss zwischen gierig und genügsam, zusammen mit den konkreten Stellen, an denen die Teilmenge von MicroPython hinter CPython zurückbleibt. Greifen Sie dazu, wenn str.find oder str.split nicht mehr weiterkommen.

  • Container jenseits der eingebautencollections.namedtuple() für typisierte Datensätze, collections.deque für begrenzte Ringpuffer und gleitende Fenster, collections.OrderedDict, wenn die Einfügereihenfolge Teil der Gleichheit ist, und heapq für Fragen wie „was ist das Kleinste“ oder „was ist am dringendsten“, aufgebaut auf einer einfachen Liste. Jedes davon füllt eine Lücke, die die vier zentralen Container-Typen hinterlassen.

  • Die alltäglichen Workflow-Werkzeuge – Comprehensions zum Aufbau von Collections aus bestehenden, Generatoren und das Iterator-Protokoll zur trägen Verarbeitung von Daten, Dekoratoren und Kontextmanager zum Umhüllen gängiger Acquire/Release- und Vorher/Nachher-Muster sowie die Debugging-Gewohnheiten (Lesen von Tracebacks, repr(), dir(), help(), das Modul logging), die aus einem kaputten Skript ein funktionierendes machen.

2.42.1. Diese Einführung später nutzen

Behandeln Sie die Einführung als Nachschlagematerial, nicht als einmalige Lektüre. Die Kapitel sind absichtlich kurz; das Zurückkehren, um das Wissen über Slicing oder Kontextmanager oder Comprehensions aufzufrischen, ist der vorgesehene Zweck. Setzen Sie ein Lesezeichen bei dem Abschnitt, zu dem Sie am häufigsten greifen.

Wenn etwas in der Dokumentation der Kamera später auf ein Python-Konzept verweist, das Sie nicht kennen – etwa „dies gibt einen Kontextmanager zurück“ oder „iterieren Sie über das Ergebnis“ – ist die entsprechende Seite der Einführung der richtige Startpunkt.

2.42.2. Wie es von hier aus weitergeht

Grundlegende Hardwaresteuerung baut direkt auf dem Python auf, das Sie nun kennen. Wo die Einführung im Speicher lebte, lebt die Hardwaresteuerung in der physischen Welt – Spannungen an Pins, Impulse auf Leitungen, Bytes, die über Busse zu anderen Chips getaktet werden. Das Werkzeugset verlagert sich auf das Modul machine und eine dünne Schicht Elektronik. Alles aus der Einführung trägt weiter; Sie werden def oder with nicht neu lernen müssen, ebenso wenig, wie sich bytearray von bytes unterscheidet.

Wenn Sie im Hardware-Material auf ein Python-Feature stoßen, das sich unvertraut anfühlt, ist diese Einführung der Ort, zu dem Sie zurückkehren sollten.