Python umí samozřejmě i složitější věci než fungovat jako kalkulačka. Následující kód počítá několik prvních členů Fibonnaciho posloupnosti. (Tam, kde je vypsáno TAB, tam být tabelátor.)
>>> a,b=0,1
>>> while b < 20:
... [TAB] print b,
... [TAB] a,b = b,a+b
1 1 2 3 5 8 13
Cyklus while
(stejně jako v jiných jazycích) cyklí tak dlouho,
dokud je podmínka pravdivá.
Za zmínku dále stojí odsazení řádků za řádkem s while
. V Pythonu se
pro seskupení bloku příkazů používá odsazení. Řádky, které jsou stejně
odsazeny (a pod sebou) se považují za patřící do stejného bloku příkazů.
Dále už nebudu vypisovat tabelátory a budu předpokládat, že si je
čtenář sám domyslí. Posledním znakem na řádku předcházejícím bloku
příkazů je vždy dvojtečka (kromě toho, že usnadňuje práci parseru
také zvyšuje čitelnost).
V Pascalu se pro ohraničení bloku používají dlouhá slova begin
a end
, v poněkud stručnějším jazyce (C) zase kudrnaté závorky.
Python předpokládá, že slušný programátor odsazuje a proto používá
odsazení zároveň jako závorek.
Při odsazování je slušné v jednom modulu dodržovat jeden typ odsazení - buď používat tabelátory nebo mezery. Jedním důvodem je, že Python neví, kolik má ve Vašem editoru tabelátor mezer a naivně předpokládá 8 mezer. Pokud Váš skript bude přenesen na jiný počítač, mohlo by se stát, že cizí editor rozbije tabelátory na jiný počet mezer, než měl původně. Výsledkem je, že program přestane fungovat. Pokud posíláte kolegovi skript, který ``určitě jede'' a u něho nebude fungovat, budete vypadat jako ...
Tvoření bloků odsazením je jedna z nejkontroverznějších vlastností
Pythonu a také jedním z nejdiskutovanějších témat v comp.lang.python
.
ADVANCED:
Přesněji řečeno, ty závorky tam jsou, ale nejsou
vidět. Parser při načítání generuje dva speciální terminály INDENT
a DEDENT
pokaždé, když zjistí, že předchozí řádek je více (resp.
méně) odsazen než předchozí. Tyto dva terminály slouží jako začátek
(resp. konec) bloku.