Code:
def foo():
try:
return 1
finally:
return 2
print(foo())
Solution and Explanation:
finally:
return 2
This line calls the foo function and prints its return value.
What Happens When the Function is Called:
- When foo is called, it enters the try block and executes return 1.
- Normally, return 1 would cause the function to exit immediately, returning 1. However, because there is a finally block, Python executes the finally block before the function completes.
- The finally block contains return 2. This statement overrides the previous return 1, so the function returns 2 instead.
Conclusion:
The finally block in Python always gets executed, and if it contains a return statement, it will override any return value from the try block. Therefore, the output of print(foo()) will be 2.
def foo(): try: return 1 finally: return 2 print(foo()) # This will output: 2