2.42. Riepilogo¶
Hai esaminato le parti di Python che ricorrono costantemente quando si scrivono script per la OpenMV Cam:
I fondamenti del linguaggio – valori e variabili, aritmetica e confronto, stringhe e byte, le quattro collezioni principali (
list,tuple,dict,set), condizionali e cicli, la definizione di funzioni e la gestione dei loro argomenti e del loro scope, la definizione di classi e l’uso dell’ereditarietà, il sollevamento e la gestione delle eccezioni. Questi sono i mattoni da cui è costruito ogni altro pezzo di Python.Gli elementi strutturali – suddividere il codice tra moduli e package, importare ciò di cui hai bisogno, leggere e scrivere file con
with, scambiare dati strutturati tramitejsone impacchettare record binari tramitestructcon l’endianness e campi interi a larghezza fissa. Questi compaiono nel momento in cui uno script supera il singolo file o ha bisogno di comunicare con qualcosa al di fuori di sé.Le parti che cambiano forma su un runtime vincolato – perché i float di MicroPython sono a 32 bit e come confrontarli in modo affidabile, come il garbage collector distribuisce e recupera i blocchi, perché la frammentazione conta su un heap piccolo, e come la pre-allocazione mantiene ben comportati gli script di lunga durata. Le abitudini da desktop a volte traggono in inganno qui; questo materiale ti fornisce il modello mentale corretto per il codice che vive sul dispositivo.
Gli strumenti di introspezione e di codice dinamico –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()per osservare i valori e l’ambiente;eval()/exec()/compile()per i rari casi in cui produrre codice in fase di esecuzione è la risposta giusta. La maggior parte degli script non li usa mai, ma sapere che esistono (e quando non ricorrervi) fa parte del saper leggere il Python scritto da altri.Il pattern matching sul testo – il modulo
reper le stringhe la cui forma puoi descrivere ma non enumerare. Classi di caratteri, quantificatori, gruppi di cattura, ancore e il compromesso tra greedy e lazy, insieme ai punti specifici in cui il sottoinsieme di MicroPython si ferma prima di CPython. Ricorri ad esso quandostr.findostr.splitarrivano al capolinea.Contenitori oltre i built-in –
collections.namedtuple()per i record tipizzati,collections.dequeper i ring buffer limitati e le finestre scorrevoli,collections.OrderedDictquando l’ordine di inserimento fa parte dell’uguaglianza, eheapqper le domande del tipo «qual è il più piccolo» o «qual è il più urgente» costruite su una semplice lista. Ciascuno colma una lacuna lasciata dai quattro tipi di contenitore principali.Gli strumenti del flusso di lavoro quotidiano – le comprehension per costruire collezioni a partire da quelle esistenti, i generatori e il protocollo dell’iteratore per elaborare i dati in modo lazy, i decoratori e i context manager per incapsulare i comuni pattern di acquisizione/rilascio e prima/dopo, e le abitudini di debugging (leggere i traceback,
repr(),dir(),help(), il modulologging) che trasformano uno script rotto in uno funzionante.
2.42.1. Usare questo manuale in seguito¶
Considera il manuale come materiale di riferimento, non una lettura unica. I capitoli sono volutamente brevi; tornarci per rinfrescare la memoria sullo slicing, sui context manager o sulle comprehension è l’uso previsto. Aggiungi ai segnalibri la sezione che consulti più spesso.
Se qualcosa nella documentazione della camera fa in seguito riferimento a un concetto Python che non riconosci – ad esempio, «questo restituisce un context manager» o «itera il risultato» – la pagina corrispondente del manuale è il punto da cui iniziare.
2.42.2. Dove andare da qui¶
Il controllo base dell’hardware si basa direttamente sul Python che ora conosci. Mentre il manuale viveva nella memoria, il controllo dell’hardware vive nel mondo fisico – tensioni sui pin, impulsi sui fili, byte trasmessi tramite bus ad altri chip. Il set di strumenti si sposta sul modulo machine e su un sottile strato di elettronica. Tutto ciò che hai imparato dal manuale ti sarà utile; non dovrai reimparare def o with né in cosa bytearray differisce da bytes.
Quando incontri una funzionalità di Python che ti sembra poco familiare nel materiale sull’hardware, questo manuale è il punto a cui tornare.