2.42. Shrnutí¶
Prošli jste si ty části Pythonu, které se neustále objevují při psaní skriptů pro OpenMV Cam:
Základy jazyka – hodnoty a proměnné, aritmetika a porovnávání, řetězce a bajty, čtyři základní kolekce (
list,tuple,dict,set), podmínky a smyčky, definování funkcí a správa jejich argumentů a oboru platnosti, definování tříd a používání dědičnosti, vyvolávání a zpracování výjimek. To jsou cihly, ze kterých je postaveno vše ostatní v Pythonu.Strukturální prvky – rozdělení kódu mezi moduly a balíčky, importování toho, co potřebujete, čtení a zápis souborů pomocí
with, výměna strukturovaných dat přesjsona balení binárních záznamů přesstructs endianitou a poli celých čísel pevné šířky. Tyto se objeví ve chvíli, kdy skript přeroste jediný soubor nebo potřebuje komunikovat s něčím mimo sebe.Části, které na omezeném běhovém prostředí mění tvar – proč jsou čísla typu float v MicroPython 32bitová a jak je spolehlivě porovnávat, jak garbage collector vydává a uvolňuje bloky, proč na malé haldě záleží na fragmentaci a jak předběžná alokace udržuje dlouhoběžící skripty ve slušném chování. Návyky z desktopu zde někdy zavádějí; tento materiál vám dá správný myšlenkový model pro kód, který žije na zařízení.
Nástroje pro introspekci a dynamický kód –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()pro nahlížení do hodnot a prostředí;eval()/exec()/compile()pro vzácné případy, kdy je generování kódu za běhu tím správným řešením. Většina skriptů se jich nikdy nedotkne, ale vědět, že existují (a kdy po nich nesahat), je součástí čtení cizího pythonovského kódu.Porovnávání vzorů v textu – modul
repro řetězce, jejichž tvar dokážete popsat, ale ne vyjmenovat. Třídy znaků, kvantifikátory, zachytávající skupiny, kotvy a kompromis mezi hladovým a líným chováním, spolu s konkrétními místy, kde podmnožina v MicroPython nedosahuje na CPython. Sáhněte po něm, kdyžstr.findnebostr.splitpřestanou stačit.Kontejnery nad rámec vestavěných –
collections.namedtuple()pro typované záznamy,collections.dequepro omezené kruhové buffery a klouzavá okna,collections.OrderedDict, když je pořadí vkládání součástí rovnosti, aheapqpro otázky „co je nejmenší“ nebo „co je nejnaléhavější“ postavené nad obyčejným seznamem. Každý z nich zaplňuje mezeru, kterou čtyři základní typy kontejnerů zanechávají.Nástroje pro každodenní práci – comprehensions pro sestavování kolekcí z existujících, generátory a protokol iterátoru pro líné zpracování dat, dekorátory a kontextové manažery pro zabalení běžných vzorů získat/uvolnit a před/po a návyky při ladění (čtení tracebacků,
repr(),dir(),help(), modullogging), které z rozbitého skriptu udělají opravený.
2.42.1. Pozdější používání tohoto úvodu¶
Berte tento úvod jako referenční materiál, ne jako jednorázové čtení. Kapitoly jsou záměrně krátké; vracet se k osvěžení řezů, kontextových manažerů nebo comprehensions je zamýšlené použití. Uložte si do záložek tu část, po které sáhnete nejčastěji.
Pokud později něco v dokumentaci kamery odkáže na pythonovský koncept, který nepoznáváte – řekněme „toto vrací kontextový manažer“ nebo „iterujte výsledek“ – odpovídající stránka úvodu je místem, kde začít.
2.42.2. Kam dál¶
Základní ovládání hardwaru staví přímo na Pythonu, který nyní znáte. Tam, kde úvod žil v paměti, žije ovládání hardwaru ve fyzickém světě – napětí na pinech, pulzy na vodičích, bajty taktované přes sběrnice do dalších čipů. Sada nástrojů se přesouvá k modulu machine a tenké vrstvě elektroniky. Vše z úvodu se přenáší dál; nebudete se znovu učit def nebo with ani jak se bytearray liší od bytes.
Až narazíte na pythonovskou vlastnost, která se v hardwarovém materiálu zdá neznámá, je tento úvod místem, kam se vrátit.