Tak jako máš na počítači nainstalovaný operační systém, na vývojové desce je takzvaný firmware, program, který ovládá všechny ty drátky, čipy a světýlka, co v ní jsou. My používáme firmware zvaný MicroPython, který navíc rozumí jazyku Python a umí provádět pythonní příkazy. Zkus si to! Tři zobáčky, které vyskočí když se k destičce připojíš (příp. když pak zmáčkneš Enter), přišly ze zařízení, které teď netrpělivě čeká na příkaz.
>>> 1+1
2
>>> print('Hello World')
Hello World
Téměř vše, co používáš v Pythonu na počítači, umí MicroPython taky: čísla, řetězce, seznamy, třídy, výjimky, moduly a tak dál. Některé detaily ale jsou trochu osekané, aby se všechno vešlo do extrémně malého prostoru. Zkus si, jak se liší efekt následujících příkazů od „velkého” Pythonu:
>>> print
>>> import math
>>> math.pi
Nejdůležitější věc, která je osekaná, je standardní
knihovna – většina modulů, které na
počítači můžeš naimportovat, v MicroPythonu chybí.
U modulů jako turtle
je to pochopitelné,
ale v rámci šetření místem chybí i moduly jako random
.
Většinou to příliš nevadí – malá zařízení se používají
na jiné věci než ta velká – ale je potřeba si na to
dát pozor.
Některé věci ze standardní knihovny se dají najít
ve zjednodušené formě na jiných místech.
Například ačkoliv modul random
chybí,
náhodné číslo od 0 do 255 se dá získat pomocí:
>>> from os import urandom
>>> urandom(1)[0]
61
Při psaní složitějšího kódu si všimneš, že konzole MicroPythonu automaticky odsazuje. To je pro malé programy pohodlné, ale umí to i znepříjemnit život – hlavně když chceš kód do konzole zkopírovat odjinud.
Proto má konzole MicroPythonu speciální vkládací mód, který automatické odsazování vypíná. Aktivuje se pomocí Ctrl+E a ukončuje se pomocí Ctrl+D.
{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-jaro-2019-pondeli:micropython:2", "title": "MicroPython – taky Python", "html": "\n \n \n\n <h2>MicroPython – taky Python</h2>\n<p>Tak jako máš na počítači nainstalovaný operační\nsystém, na vývojové desce je takzvaný <em>firmware</em>,\nprogram, který ovládá všechny ty drátky,\nčipy a světýlka, co v ní jsou.\nMy používáme firmware zvaný <em>MicroPython</em>,\nkterý navíc rozumí jazyku Python a umí provádět pythonní příkazy. Zkus si to!\nTři zobáčky, které vyskočí když se k destičce připojíš (příp. když pak\nzmáčkneš Enter), přišly\nze zařízení, které teď netrpělivě čeká na příkaz.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">1</span><span class=\"o\">+</span><span class=\"mi\">1</span>\n<span class=\"go\">2</span>\n<span class=\"gp\">>>> </span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">'Hello World'</span><span class=\"p\">)</span>\n<span class=\"go\">Hello World</span>\n</pre></div><p>Téměř vše, co používáš v Pythonu na počítači,\numí MicroPython taky: čísla, řetězce, seznamy, třídy,\nvýjimky, moduly a tak dál.\nNěkteré detaily ale jsou trochu osekané, aby se všechno\nvešlo do extrémně malého prostoru.\nZkus si, jak se liší efekt následujících příkazů\nod „velkého” Pythonu:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"k\">print</span>\n<span class=\"gp\">>>> </span><span class=\"kn\">import</span> <span class=\"nn\">math</span>\n<span class=\"gp\">>>> </span><span class=\"n\">math</span><span class=\"o\">.</span><span class=\"n\">pi</span>\n</pre></div><p>Nejdůležitější věc, která je osekaná, je <em>standardní\nknihovna</em> – většina modulů, které na\npočítači můžeš naimportovat, v MicroPythonu chybí.\nU modulů jako <code>turtle</code> je to pochopitelné,\nale v rámci šetření místem chybí i moduly jako <code>random</code>.\nVětšinou to příliš nevadí – malá zařízení se používají\nna jiné věci než ta velká – ale je potřeba si na to\ndát pozor.</p>\n<p>Některé věci ze standardní knihovny se dají najít\nve zjednodušené formě na jiných místech.\nNapříklad ačkoliv modul <code>random</code> chybí,\nnáhodné číslo od 0 do 255 se dá získat pomocí:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"kn\">from</span> <span class=\"nn\">os</span> <span class=\"kn\">import</span> <span class=\"n\">urandom</span>\n<span class=\"gp\">>>> </span><span class=\"n\">urandom</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">61</span>\n</pre></div><h2>Ovládání konzole</h2>\n<p>Při psaní složitějšího kódu si všimneš, že konzole MicroPythonu automaticky odsazuje.\nTo je pro malé programy pohodlné, ale umí to i znepříjemnit život – hlavně když chceš\nkód do konzole zkopírovat odjinud.</p>\n<p>Proto má konzole MicroPythonu speciální vkládací mód, který automatické odsazování vypíná.\nAktivuje se pomocí <kbd>Ctrl+E</kbd> a ukončuje se pomocí <kbd>Ctrl+D</kbd>.</p>\n\n\n " } } }