Příkazy break a continue

Příkazem break vyskočíte z cyklu, který se právě provádí. Funguje na for i na while cykly. Svým způsobem se podobá příkazu return ve funkci, ale nemůže nic navracet. Když je vnořených víc cyklů v sobě, je možné takhle vyskočit jen z toho vnitřního.

Podobný příkaz je continue. Chová se podobně, ale cyklus nezastaví; jen přeskočí na další otočku, tj. v případě cyklu for na další prvek sekvence.

Ukázka.
>>> for znak in "toto je ex-papoušek":
...     if znak == " ":
...             continue
...     if znak == "-":
...             break
...     print(znak)
... 
t
o
t
o
j
e
e
x

Příklad. Některé programovací jazyky nabízejí cyklus s podmínkou na konci (známý jako do...while), který podobně jako while cyklus běží, dokud je podmínka splněná, ale ta podmínka se vyhodnocuje až na konci. Cyklus proto vždy proběhne aspoň jednou. Rozmyslete si, jako něco podobného napsat v Pythonu pomocí while cyklu a příkazu break, a jaké jsou jiné možnosti. Na hodině jsme si napsali tři různé, dá se vymyslet ještě pár dalších (rozumných).

Obecnější zápis funkcí

Když voláme nějakou funkci, můžeme jí parametry dávat buďto v pevném pořadí, anebo je pojmenovat (pak na pořadí nezáleží). Pojmenované parametry se píšou jako název=hodnota. Je možné oba způsoby kombinovat, takže funkci voláme s prvními několika parametry nepojmenovanými a za nimi následují některé pojmenované.

>>> print("Ahoj", "světe", end="..?", sep=" ") Ahoj světe..?>>>
Všimněte si, že šipky >>> pro zadání dalšího příkazu se vypsaly rovnou na tentýž řádek. To proto, že jsme nastavili parametr end na něco, co neobsahuje konec řádku.

Parametry, které funkci při volání nedáme, nám Python nastaví na jejich výchozí hodnotu. Výchozí hodnoty se píšou také zápisem název=výchozí_hodnota, ale ve funkci samotné. Když parametr výchozí hodnotu nemá a žádnou mu nenastavíme ani při volání funkce, nastane pochopitelně chyba.

def mocnina(x, y=2): return x**y >>> mocnina(7, 3) 343 >>> mocnina(7) 49 >>> mocnina() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: mocnina() missing 1 required positional argument: 'x'

Když chceme s parametry dělat něco divočejšího, můžeme si je vyprosit všechny. U nepojmenovaných je důležité jen pořadí, takže je dostaneme jakožto seznam. Pojmenované parametry dostaneme ve slovníku: klíčem je název každého parametru (vždy řetězec) a hodnotou je jeho hodnota (libovolného typu). Proměnnou pro nepojmenované parametry označíme jednou hvězdičkou, pro pojmenované dvěma hvězdičkami:

def secti(*args, **kwargs): for x in args: print(x) for i, x in kwargs.items(): print(i, ":", x)

Ještě dlužno podotknout, že obdobný hvězdičkový zápis lze použít i při volání funkce. Domyslete si nebo vyzkoušejte, co dělá – je to smysluplné, jen nechci ve výkladu zabíhat moc do podrobností.