2.42. Összegzés

Végigjártad a Python azon részeit, amelyek folyamatosan előkerülnek, amikor szkripteket írsz az OpenMV Cam számára:

  • A nyelvi alapok – értékek és változók, aritmetika és összehasonlítás, karakterláncok és bájtok, a négy alapvető gyűjtemény (list, tuple, dict, set), feltételek és ciklusok, függvények definiálása és argumentumaik valamint hatókörük kezelése, osztályok definiálása és az öröklődés használata, kivételek kiváltása és kezelése. Ezek azok a téglák, amelyekből a Python minden más darabja felépül.

  • A strukturális elemek – a kód modulok és csomagok közötti felosztása, a szükséges dolgok importálása, fájlok olvasása és írása a with segítségével, strukturált adatok cseréje a json modulon keresztül, valamint bináris rekordok csomagolása a struct modullal, bájtsorrenddel és rögzített szélességű egész mezőkkel. Ezek abban a pillanatban előkerülnek, amint egy szkript túlnő egyetlen fájlon, vagy valami önmagán kívülivel kell kommunikálnia.

  • Azok a részek, amelyek alakot változtatnak egy korlátozott futtatókörnyezeten – miért 32 bitesek a MicroPython lebegőpontos számai, és hogyan hasonlítsd össze őket megbízhatóan, hogyan osztja ki és veszi vissza a blokkokat a szemétgyűjtő, miért számít a töredezettség egy kis kupacon, és hogyan tartja jól viselkedőként a hosszan futó szkripteket az előzetes lefoglalás. Az asztali szokások itt néha félrevezetnek; ez az anyag a megfelelő gondolati modellt adja az eszközön futó kódhoz.

  • Az introspekciós és dinamikuskód-eszközökid(), hash(), isinstance(), issubclass(), callable(), globals(), locals() az értékek és a környezet vizsgálatához; eval() / exec() / compile() azokhoz a ritka esetekhez, amikor a kód futásidejű előállítása a helyes válasz. A legtöbb szkript soha nem érinti ezeket, de annak ismerete, hogy léteznek (és hogy mikor ne nyúlj hozzájuk) része mások Python-kódjának olvasásának.

  • Mintaillesztés szövegen – a re modul azokhoz a karakterláncokhoz, amelyek alakját le tudod írni, de nem tudod felsorolni. Karakterosztályok, kvantorok, befogó csoportok, horgonyok és a mohó-kontra-lusta kompromisszum, együtt azokkal a konkrét helyekkel, ahol a MicroPython részhalmaza elmarad a CPythontól. Akkor nyúlj hozzá, amikor a str.find vagy a str.split kifut a lehetőségekből.

  • Konténerek a beépítetteken túlcollections.namedtuple() a típusos rekordokhoz, collections.deque a korlátozott gyűrűpufferekhez és gördülő ablakokhoz, collections.OrderedDict amikor a beszúrási sorrend része az egyenlőségnek, és heapq a „melyik a legkisebb” vagy „melyik a legsürgősebb” kérdésekhez, egy sima listára építve. Mindegyik betölt egy rést, amit a négy alapvető konténertípus maga után hagy.

  • A mindennapi munkafolyamat-eszközök – listaértelmezések gyűjtemények meglévőkből való felépítéséhez, generátorok és az iterátorprotokoll az adatok lusta feldolgozásához, dekorátorok és kontextuskezelők a gyakori lefoglalás/felszabadítás és előtte/utána minták becsomagolásához, valamint a hibakeresési szokások (visszakövetések olvasása, repr(), dir(), help(), a logging modul), amelyek egy hibás szkriptből egy javítottat csinálnak.

2.42.1. Ennek a bevezetőnek a későbbi használata

Tekints a bevezetőre referenciaanyagként, ne egyszeri olvasmányként. A fejezetek szándékosan rövidek; az a tervezett használat, hogy visszatérsz felfrissíteni a szeletelést, a kontextuskezelőket vagy a listaértelmezéseket. Tedd könyvjelzők közé azt a szakaszt, amelyhez a leggyakrabban nyúlsz.

Ha később valami a kamera dokumentációjában egy olyan Python-fogalomra hivatkozik, amelyet nem ismersz fel – mondjuk, „ez egy kontextuskezelőt ad vissza” vagy „iterálj az eredményen” – a megfelelő bevezetőoldal az a hely, ahonnan kiindulhatsz.

2.42.2. Merre tovább innen

Az alapvető hardvervezérlés közvetlenül arra a Pythonra épül, amelyet most már ismersz. Míg a bevezető a memóriában élt, a hardvervezérlés a fizikai világban él – feszültségek a lábakon, impulzusok a vezetékeken, buszokon más chipekre órajelezett bájtok. Az eszköztár a machine modulra és egy vékony elektronikai rétegre vált át. A bevezetőből minden tovább él; nem kell újratanulnod a def vagy a with használatát, sem azt, hogy a bytearray miben különbözik a bytes típustól.

Amikor egy olyan Python-funkcióba ütközöl, amely ismeretlennek tűnik a hardveres anyagban, ehhez a bevezetőhöz térhetsz vissza.