[python] for-else -> wtf?
Michal Molhanec
molhanec na seznam.cz
Středa Duben 23 15:49:54 CEST 2008
Dusan Zatkovsky napsal(a):
> DD.
>
> Riesili sme tu s kolegami jeden priklad, ktory na prvy pohlad bol syntakticky
> nespravne. Potom som na neho narazil na
> http://docs.python.org/tut/node6.html#SECTION006400000000000000000 a z
> dokumentacie som zistil, ze je dokonca syntakticky spravne.
>
> Tak som sa s for-else chcel zoznamit a tak som si vytvoril 3 testcase:
>
> # cyklus sa vykona
> for x in 'a':
> pass
> else:
> print "test1"
>
> # cyklus sa vykona a breakne
> for x in 'a':
> break
> else:
> print "test2"
>
> # cyklus sa nevykona
> for x in '':
> pass
> else:
> print "test3"
>
>
> Vysledok zodpoveda tomu, co vravi dokumentacia, ale mne to pride zvratene.
>
> Preco to else zavisi na break vo vnutri cyklu a nie na tom, ci sa cyklus
> vykonal, alebo nie? Ked totiz na toto narazi niekto, kto sa python uci, tak
> sa z toho osype ( pisem prilezitostne v pythone uz 2 roky a je to aj moj
> pripad ).
>
>
> Mozete mi niekto ozrejmit, co tym autor myslel a preco je ta logika postavena
> prave takto? Intuicia mi totiz hovori, ze else by sa malo vykonat prave ked
> sa nevykona ani jeden priebeh cyklu...
0 pruchodu cyklem je typicky OK
predstavme si napr. nejake hledani
for i in nekde:
if nasel(i):
print "Nasel"
break
else:
print "Nenasel"
tohle bude fungovat i pokud nekde bude prazdne
Další informace o konferenci Python