I found something like this in a StackOverflow discussion.
>>> def paradox():
.... try:
.... raise Exception("Exception raised during try")
.... except:
.... print "Except after try"
.... return True
.... finally:
.... print "Finally"
.... return False
.... return None
....
>>> return_val = paradox()
Except after try
Finally
>>> return_val
False
I understand most of this.
What I don't understand is why this returns False rather than True. Does the finally short-circuit the return in the except block?
>>> def paradox():
.... try:
.... raise Exception("Exception raised during try")
.... except:
.... print "Except after try"
.... return True
.... finally:
.... print "Finally"
.... return False
.... return None
....
>>> return_val = paradox()
Except after try
Finally
>>> return_val
False
I understand most of this.
What I don't understand is why this returns False rather than True. Does the finally short-circuit the return in the except block?
Aucun commentaire:
Enregistrer un commentaire