What happens after return statement?
sismex01 at hebmex.com
sismex01 at hebmex.com
Mon Oct 21 10:11:14 EDT 2002
More information about the Python-list mailing list
Mon Oct 21 10:11:14 EDT 2002
- Previous message (by thread): What happens after return statement?
- Next message (by thread): What happens after return statement?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> From: Andreas Jung [mailto:lists at andreas-jung.com] > > ... But there is one exception: > look at the document for try...except...finally. > 'finally' allows you to specify actions that are > executed in case of an exception. > > -aj > Or even if there was no exception: def simple(n): # Try to return 2*n try: # But, if "n" is odd, raise exception. if n % 2: raise ValueError("Number is odd") return 2*n finally: print "Number:",2*n This simple function produces this behaviour: >>> simple(2) Number: 4 4 >>> simple(4) Number: 8 8 >>> simple(5) Number: 10 Traceback (most recent call last): File "<pyshell#20>", line 1, in ? simple(5) File "<pyshell#14>", line 3, in simple if n % 2: raise ValueError("Number is odd") ValueError: Number is odd >>> simple(1) Number: 2 Traceback (most recent call last): File "<pyshell#21>", line 1, in ? simple(1) File "<pyshell#14>", line 3, in simple if n % 2: raise ValueError("Number is odd") ValueError: Number is odd >>> So, what's in the "finally" clause get's executed before exiting the function, even after a "return" statement; this is kinda neat when playing with threaded functions, because you can specify that you with to release a lock inside the finally: mutex.acquire() try: # do some interesting stuff. return result finally: mutex.release() In this case, the mutex gets released no matter if there was or there wasn't an exception; this is really cool. HTH -gustavo
- Previous message (by thread): What happens after return statement?
- Next message (by thread): What happens after return statement?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list