Pyenv a REPL
Odpřednášena v pátek 4. 9.
Byl zde zadán #U1
Představili jsme si různé části vývojového prostředí a rozjeli jsme pyenv
a VS Code.
Vývojové prostředí
K programování je samozřejmě potřeba mít něco, co bude schopno náš program spustit (pro zvídavé konkrétně kompilátor či interpeter), a nějaký textový editor, ve kterém náš program budeme psát.
Na vysoké škole a zvláště pak v zaměstnání však musí každý programátor používat i různé pomocné nástroje, které — ač se to třeba zpočátku může zdát jinak — mu nakonec ulehčí práci. Mezi nimi jsou hlavní:
- linter: ještě před spuštěním programu se v něm linter pokusí najít stylistické i programovací chyby
- pro Python například pylint
- formatter: formátuje kód tak, aby odpovídal nějakým stylovým standartům
- project manager:
- pro Python je jeden z nejlepších poetry
- version control system: ukládá pro každý soubor v projektu jeho verze, takže se můžete jednoduše vrátit k přechozímu stavu projektu
- standartně se používá
git
, více informací příští přednášku
- standartně se používá
Většina z těchto nástrojů nás ještě čeká, už jsme se ale seznámili s pyenv
(respektive s jeho verzí pro Windows pyenv-win
), což je program, který spravuje verze Pythonu.
Pyenv
Často se stává, že při práci na více projektech budete pro každý projekt potřebovat jinou verzi Pythonu, většinou proto, že ten projekt napsal někdo před vámi a teď se už nikomu nechce migrovat na novější verzi, když to s tou starou funguje.
Pyenv řeší přesně tento problém: pomocí pyenv install X
lze nainstalovat libovolnou verzi Pythonu a pomocí pyenv global X
ji následně i aktivovat. To vám dovolí rychle a jednoduše přepínat mezi libovolným množstvím verzí Pythonu v závislosti na tom, na kterém projektu budete zrovna pracovat.
REPL
Do teď jste všechny své Pythonovské programy spouštěli "v kuse": do souboru jste napsali nějaký kód a celý tento soubor jste následně spustili na příkazové řádce. Někdy se ale hodí moci pouze načíst celý váš soubor a spouštět každou funkci zvlášť, ručně, s jakýmkoli vstupem si zamanete — například, pokud danou funkci chcete otestovat.
Jak používat REPL ve VS Code
Toto si zkusíme i příští hodinu, takže pokud něco nedává smysl, nezoufejte. Pro ty z vás, kteří by se s REPLem chtěli více seznámit už doma:
- Ve VS Code:
Ctrl+Shift+P
>REPL
> příkazPython: Start REPL
- Otevře se okno terminálu s nastartovaným REPL
- V REPL můžete napsat jakýkoli Pythonovský kód a pomocí
Enter
ho spustit, popřípadě můžete načíst všechny definované věci (funkce, proměnné) ze svého souboru pomocífrom my_file import *
. Pak je už můžete v REPL normálně používat.
REPL lze navíc spustit i online, a to na stránce repl.it. Na výběr je REPL pro více jazyků, vám se asi nejvíce bude hodit to pro Python.
VS Code
Pokud máte rádi klávesové zkratky, zde je celkem užitečný cheat sheet. Já nějčastěji používám:
Ctrl+N
pro vytvoření nového souboruCtrl+B
pro zobrazení/skrytí bočního paneluCtrl+J
pro zobrazení/skrytí spodního paneluCtrl+P
pro ryhlý přechod mezi otevřenými souboryCtrl+Shift+P
pro zobrazení příkazové řádky VS Code, kde lze vyhledávat všechny možné příkazy (i ty tři, které jsem popsal výše) — tak se mimochodem dají objevovat nové klávesové zkratky
Závěrečný program
V poslední půlhodince jsme řešili následující úlohu: Napište funkci, která na vstupu dostane seznam seznamů čísel a vrátí celkový počet čísel napříč všemy seznamy. Příklad:
IN: [[1, 2, 3], [4, 5]] OUT: 5
Mé "normální" řešení:
def count(lists):
total = 0
for l in lsts:
total += len(l) # tohle je marginálně lepší, než tu mít druhý for-loop
return total
Mé řešení, kdybych chtěl flexit:
def count(lists):
return sum(len(l) for l in lists) # (X for Y in Z) je tzv. list comprehension