2.42. Yhteenveto¶
Olet käynyt läpi ne Pythonin osat, jotka tulevat jatkuvasti vastaan OpenMV Camille skriptejä kirjoitettaessa:
Kielen perusteet – arvot ja muuttujat, aritmetiikka ja vertailu, merkkijonot ja tavut, neljä keskeistä kokoelmaa (
list,tuple,dict,set), ehtolauseet ja silmukat, funktioiden määrittely sekä niiden argumenttien ja näkyvyysalueen hallinta, luokkien määrittely ja perinnän käyttö, poikkeusten nostaminen ja käsittely. Nämä ovat tiilet, joista jokainen muu Pythonin osa rakentuu.Rakenteelliset osat – koodin jakaminen moduuleihin ja paketteihin, tarvitsemasi tuonti (import), tiedostojen luku ja kirjoitus
with-rakenteella, jäsennellyn datan vaihtaminenjson-moduulin avulla ja binääritietueiden pakkaaminenstruct-moduulilla tavujärjestyksen (endianness) ja kiinteäleveyksisten kokonaislukukenttien kanssa. Nämä tulevat esiin heti, kun skripti kasvaa yhtä tiedostoa suuremmaksi tai sen on kommunikoitava jonkin ulkopuolisen kanssa.Osat, jotka muuttavat muotoaan rajoitetussa suoritusympäristössä – miksi MicroPythonin liukuluvut ovat 32-bittisiä ja miten niitä verrataan luotettavasti, miten roskienkerääjä jakaa ja vapauttaa lohkoja, miksi pirstoutumisella on väliä pienessä keossa ja miten esivaraus pitää pitkään käynnissä olevat skriptit hyvin käyttäytyvinä. Työpöytätottumukset johtavat täällä joskus harhaan; tämä aineisto antaa sinulle oikean ajatusmallin koodille, joka asuu laitteella.
Introspektio- ja dynaamisen koodin työkalut –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()arvojen ja ympäristön tarkasteluun;eval()/exec()/compile()niitä harvoja tapauksia varten, joissa koodin tuottaminen ajon aikana on oikea ratkaisu. Useimmat skriptit eivät koskaan käytä näitä, mutta niiden olemassaolon tunteminen (ja sen tietäminen, milloin niihin ei kannata turvautua) on osa muiden ihmisten Pythonin lukemista.Tekstin hahmontunnistus –
re-moduuli merkkijonoille, joiden muodon voit kuvata mutta jota et voi luetella tyhjentävästi. Merkkiluokat, kvantifioijat, kaappausryhmät, ankkurit ja ahne-vastaan-laiska-kompromissi sekä ne tietyt kohdat, joissa MicroPythonin osajoukko jää CPythonista jälkeen. Turvaudu siihen, kunstr.findtaistr.splitei enää riitä.Säiliöt sisäänrakennettujen lisäksi –
collections.namedtuple()tyypitetyille tietueille,collections.dequerajatuille rengaspuskureille ja liukuville ikkunoille,collections.OrderedDictsilloin, kun lisäysjärjestys on osa yhtäsuuruutta, jaheapqkysymyksiin ”mikä on pienin” tai ”mikä on kiireellisin”, jotka rakentuvat tavallisen listan varaan. Kukin täyttää aukon, jonka neljä keskeistä säiliötyyppiä jättävät jälkeensä.Jokapäiväiset työnkulun työkalut – kokoelmien luomisen lyhennysmerkinnät (comprehensions) olemassa olevista kokoelmista, generaattorit ja iteraattoriprotokolla datan laiskaa käsittelyä varten, dekoraattorit ja kontekstinhallinnat (context managers) yleisten hanki/vapauta- ja ennen/jälkeen-kuvioiden kääriksi sekä virheenetsintätottumukset (jäljitysvirheiden lukeminen,
repr(),dir(),help(),logging-moduuli), jotka muuttavat rikkinäisen skriptin korjatuksi.
2.42.1. Tämän alkuoppaan käyttäminen myöhemmin¶
Käsittele alkuopasta viitemateriaalina, ei kerran läpi luettavana. Luvut ovat tarkoituksella lyhyitä; viipaloinnin, kontekstinhallintojen tai lyhennysmerkintöjen kertaamiseen palaaminen on niiden tarkoitettu käyttötapa. Lisää kirjanmerkki siihen osioon, jota tarvitset eniten.
Jos jokin kameran dokumentaatiossa myöhemmin viittaa Python-käsitteeseen, jota et tunnista – vaikkapa ”tämä palauttaa kontekstinhallinnan” tai ”iteroi tulos” – vastaava alkuoppaan sivu on paikka, josta aloittaa.
2.42.2. Mihin tästä eteenpäin¶
Laitteiston perusohjaus rakentuu suoraan sen Pythonin varaan, jonka nyt osaat. Siinä missä alkuopas eli muistissa, laitteiston ohjaus elää fyysisessä maailmassa – jännitteinä nastoissa, pulsseina johdoissa, tavuina, jotka kellotetaan väylien yli muille piireille. Työkalupakki siirtyy machine-moduuliin ja ohueen elektroniikkakerrokseen. Kaikki alkuoppaasta kantaa eteenpäin; et opettele uudelleen def-rakennetta tai with-rakennetta tai sitä, miten bytearray eroaa bytes-tyypistä.
Kun törmäät laitteistoaineistossa Python-ominaisuuteen, joka tuntuu vieraalta, tämä alkuopas on paikka, johon palata.