Ini adalah beberapa kode yang berperilaku aneh. Ini adalah versi sederhana dari perilaku yang saya tulis. Ini masih akan menunjukkan perilaku aneh dan saya memiliki beberapa pertanyaan khusus tentang mengapa ini terjadi.
Saya menggunakan Python 2.6.6 di 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
Hasil:
>>> print demo1()
3
>>> print demo2()
6
3
- Mengapa demo satu menghasilkan 3, bukan 1?
- Mengapa demo dua pencetakan 6 alih-alih mencetak 6 w / 4 atau 5?
sumber
finally
blok selalu berjalan.return
pernyataan itu dipanggil, Python memeriksafinally
klausa terbuka apa pun yang perlu dijalankan (lihat kutipan di atas).Urutan eksekusi adalah:
Jadi, pengembalian apa pun di blok terakhir akan mengakhiri langkah-langkah sebelumnya.
sumber