[python] cyklus for (bylo superman: zaporny systemovy cas)

superman feed na centrum.cz
Středa Listopad 29 15:49:00 CET 2006


> Jaký for a z jakého jazyka máš na mysli?
> V Pythonu se taky používá "for", ale ve významu
> foreach. A třeba v C/C++ má "for" syntaktickou
> podobu hezčeji napsaného cyklu while.

A každý cyklus včetně while není nic jiného, než hezčeji zapsaná podoba 
goto. Takhle se nikam nedostanete, protože všechny konstrukce jsou jen 
hezčeji zapsaný stroják.

Python prostě nemá cyklus for ve smyslu číselné řady, jako má co já vím 
Pascal, C, C++, PL/I, Basic, Fortran, Ada, atd.. Python má jen foreach a 
cyklus for se emuluje pomocí range/xrange/já nevím co dalšího.

> Takže ještě jednou. V jakých jazycích a 
> jak často se ten klasický for používá?
> (Třeba i statisticky vyhodnoceno, to 
> mi je jedno.)

Doporučuji použít něco jako grep for, uvidíte sám. Jazyky jsem 
vyjmenoval výše.

> Tvrdím, že v drtivé většině případů, 
> a to i v Pascalu, kde asi jde o "klasický
> for" bývá tento cyklus použit ve významu
> for-each nebo se dá použití for-each
> snadno zdůvodnit a vysvětlit.

Jedno jde nahradit druhým - for jde nahradit foreach viz python a 
foreach jde nahradit for. Akorát cyklus for je prostě pro optimalizátor 
řádově průhlednější a snadněji optimalizovatelný. A o optimalizaci jsme 
se tu přeci začali bavit, ne? Nejde o význam, ale o optimalizovatelnost.

M.P.


Další informace o konferenci Python