[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