To jest kod, który zachowuje się szczególnie. Jest to uproszczona wersja zachowania, które napisałem. To nadal będzie świadczyć o dziwnym zachowaniu i miałem kilka konkretnych pytań na temat tego, dlaczego tak się dzieje.Weird Try-Except-Else-Ostatnie zachowanie z instrukcjami Return
Używam Python 2.6.6 na Windows 7.
def demo1():
try:
raise RuntimeError,"To Force Issue"
except:
return 1
else:
return 2
finally:
return 3
def demo2():
try:
try:
raise RuntimeError,"To Force Issue"
except:
return 1
else:
return 2
finally:
return 3
except:
print 4
else:
print 5
finally:
print 6
if __name__ == "__main__":
print "*** DEMO ONE ***"
print demo1()
print "****************"
print
print "*** DEMO TWO ***"
print demo2()
print "****************"
Po uruchomieniu tego skryptu, zostanie wydrukowana:
*** DEMO ONE ***
3
****************
*** DEMO TWO ***
6
3
****************
Dlaczego demo jeden powrocie 3 zamiast 1? Dlaczego demo dwa drukowanie 6 zamiast drukowania 6 w/4 lub 5?
Dzięki za pomoc.
dlaczego nie drukuje 5 w drugim przykładzie? to nadal nie jest dobrze wyjaśnione, myślę. odpowiedź zwrotna jest dobrze odpowiedziana, ale dlaczego 5 w drugim przykładzie nie drukuje –
oh myślę, że znalazłem to, że powrót w początkowej próbie powoduje, że przeskoczył natychmiast na zewnątrz ostatecznie –
Dokładnie, ponieważ 'w końcu' blokuje ** zawsze ** biegać. –