2.42. Sammanfattning¶
Du har gått igenom de delar av Python som ständigt dyker upp när man skriver skript för OpenMV Cam:
Språkets grunder – värden och variabler, aritmetik och jämförelse, strängar och bytes, de fyra centrala samlingstyperna (
list,tuple,dict,set), villkor och loopar, att definiera funktioner och hantera deras argument och scope, att definiera klasser och använda arv, att ge upphov till och hantera undantag. Det här är byggstenarna som varje annan del av Python är uppbyggd av.De strukturella delarna – att dela upp kod över moduler och paket, att importera det du behöver, att läsa och skriva filer med
with, att utbyta strukturerad data viajsonoch att packa binära poster viastructmed endianness och heltalsfält med fast bredd. De dyker upp i samma stund som ett skript växer förbi en enda fil eller behöver kommunicera med något utanför sig självt.De delar som ändrar form i en begränsad körmiljö – varför MicroPython-flyttal är 32-bitars och hur man jämför dem på ett tillförlitligt sätt, hur skräpsamlaren delar ut och återvinner block, varför fragmentering spelar roll i en liten heap och hur förallokering håller långkörande skript välartade. Vanor från skrivbordet kan ibland leda fel här; det här materialet ger dig rätt mental modell för kod som lever på enheten.
Verktygen för introspektion och dynamisk kod –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()för att titta på värden och miljön;eval()/exec()/compile()för de sällsynta fall där det rätta svaret är att producera kod vid körningstid. De flesta skript rör aldrig dessa, men att veta att de finns (och när man inte ska ta till dem) är en del av att läsa andras Python.Mönstermatchning på text – modulen
reför strängar vars form du kan beskriva men inte räkna upp. Teckenklasser, kvantifierare, fångande grupper, ankare och avvägningen mellan girig och lat, tillsammans med de specifika ställen där MicroPythons delmängd inte når hela vägen till CPython. Ta till den närstr.findellerstr.splitinte räcker längre.Behållare utöver de inbyggda –
collections.namedtuple()för typade poster,collections.dequeför begränsade ringbuffertar och rullande fönster,collections.OrderedDictnär insättningsordningen är en del av likhet, ochheapqför frågor om ”vad är minst” eller ”vad är mest brådskande” byggda på en vanlig lista. Var och en fyller en lucka som de fyra centrala behållartyperna lämnar efter sig.De vardagliga arbetsflödesverktygen – comprehensions för att bygga samlingar från befintliga, generatorer och iteratorprotokollet för att bearbeta data lat, dekoratorer och kontexthanterare för att kapsla in vanliga mönster för förvärva/frigör och före/efter, samt felsökningsvanorna (att läsa tracebacks,
repr(),dir(),help(), modulenlogging) som förvandlar ett trasigt skript till ett fungerande.
2.42.1. Att använda denna introduktion senare¶
Behandla introduktionen som referensmaterial, inte en genomläsning i ett svep. Kapitlen är medvetet korta; att komma tillbaka för att fräscha upp minnet om slicing eller kontexthanterare eller comprehensions är den avsedda användningen. Bokmärk det avsnitt du tar till oftast.
Om något i kamerans dokumentation senare hänvisar till ett Python-koncept du inte känner igen – säg, ”detta returnerar en kontexthanterare” eller ”iterera resultatet” – är motsvarande introduktionssida platsen att börja på.
2.42.2. Vart man går härifrån¶
Grundläggande hårdvarustyrning bygger direkt på den Python du nu kan. Där introduktionen levde i minnet lever hårdvarustyrning i den fysiska världen – spänningar på stift, pulser på ledningar, bytes klockade över bussar till andra chip. Verktygslådan skiftar till modulen machine och ett tunt lager elektronik. Allt från introduktionen bärs vidare; du kommer inte att behöva lära om def eller with eller hur bytearray skiljer sig från bytes.
När du stöter på en Python-funktion som känns obekant i hårdvarumaterialet är denna introduktion platsen att komma tillbaka till.