[python] for-else -> wtf?
Dusan Zatkovsky
msk.conf na seznam.cz
Středa Duben 23 15:23:14 CEST 2008
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...
Dik
--
Dusan
Další informace o konferenci Python