2.42. Sažetak

Prošli ste kroz dijelove Pythona koji se neprestano pojavljuju pri pisanju skripti za OpenMV Cam:

  • Osnove jezika – vrijednosti i varijable, aritmetika i usporedba, stringovi i bajtovi, četiri osnovne kolekcije (list, tuple, dict, set), uvjeti i petlje, definiranje funkcija i upravljanje njihovim argumentima i dosegom, definiranje klasa i korištenje nasljeđivanja, podizanje i obrada iznimaka. To su cigle od kojih je izgrađen svaki drugi dio Pythona.

  • Strukturni dijelovi – razdvajanje koda kroz module i pakete, uvoz onoga što vam treba, čitanje i pisanje datoteka pomoću with, razmjena strukturiranih podataka putem json te pakiranje binarnih zapisa pomoću struct s redoslijedom bajtova (endianness) i poljima cijelih brojeva fiksne širine. Oni se pojavljuju u trenutku kada skripta naraste preko jedne datoteke ili treba komunicirati s nečim izvan sebe.

  • Dijelovi koji mijenjaju oblik na ograničenom okruženju izvođenja – zašto su MicroPython float brojevi 32-bitni i kako ih pouzdano uspoređivati, kako sakupljač smeća (garbage collector) dodjeljuje i vraća blokove, zašto je fragmentacija važna na maloj hrpi (heap) te kako predalokacija održava dobro ponašanje dugotrajnih skripti. Navike s računala ponekad ovdje zavaravaju; ovaj materijal daje vam pravi mentalni model za kod koji živi na uređaju.

  • Alati za introspekciju i dinamički kodid(), hash(), isinstance(), issubclass(), callable(), globals(), locals() za pogled u vrijednosti i okruženje; eval() / exec() / compile() za rijetke slučajeve kada je proizvodnja koda tijekom izvođenja pravi odgovor. Većina skripti nikada ne dotiče te alate, ali znati da postoje (i kada ne posegnuti za njima) dio je čitanja tuđeg Pythona.

  • Podudaranje uzoraka na tekstu – modul re za stringove čiji oblik možete opisati, ali ne i nabrojati. Klase znakova, kvantifikatori, grupe za hvatanje, sidra te kompromis između pohlepnog i lijenog načina, zajedno s konkretnim mjestima na kojima MicroPython podskup zaostaje za CPythonom. Posegnite za njim kada str.find ili str.split dođu do kraja svojih mogućnosti.

  • Spremnici izvan ugrađenihcollections.namedtuple() za tipizirane zapise, collections.deque za ograničene kružne međuspremnike i kotrljajuće prozore, collections.OrderedDict kada je redoslijed umetanja dio jednakosti te heapq za pitanja „što je najmanje” ili „što je najhitnije” izgrađena na običnoj listi. Svaki od njih popunjava prazninu koju ostavljaju četiri osnovna tipa spremnika.

  • Alati za svakodnevni tok rada – comprehensioni za izgradnju kolekcija iz postojećih, generatori i protokol iteratora za lijenu obradu podataka, dekoratori i upravitelji konteksta za omatanje uobičajenih uzoraka dohvati/oslobodi i prije/poslije te navike za otklanjanje pogrešaka (čitanje tragova praćenja, repr(), dir(), help(), modul logging) koje pretvaraju pokvarenu skriptu u popravljenu.

2.42.1. Kasnije korištenje ovog priručnika

Tretirajte priručnik kao referentni materijal, a ne kao štivo za jedno čitanje. Poglavlja su namjerno kratka; vraćanje radi osvježenja znanja o rezanju, upraviteljima konteksta ili comprehensionima je namjeravana upotreba. Označite knjižnom oznakom odjeljak za kojim najčešće posežete.

Ako se nešto u dokumentaciji kamere kasnije pozove na koncept Pythona koji ne prepoznajete – recimo, „ovo vraća upravitelja konteksta” ili „iterirajte rezultat” – odgovarajuća stranica priručnika mjesto je za početak.

2.42.2. Kamo dalje

Osnovno upravljanje hardverom izravno se nadograđuje na Python koji sada poznajete. Tamo gdje je priručnik živio u memoriji, upravljanje hardverom živi u fizičkom svijetu – naponi na pinovima, impulsi na žicama, bajtovi taktirani preko sabirnica do drugih čipova. Komplet alata prelazi na modul machine i tanak sloj elektronike. Sve iz priručnika prenosi se dalje; nećete ponovno učiti def ili with niti kako se bytearray razlikuje od bytes.

Kada naiđete na značajku Pythona koja vam se čini nepoznata u materijalu o hardveru, ovaj priručnik je mjesto kamo se vratiti.