Answer is :- A)20
Let's break down how it works step by step:
1. The `func` function is defined with a `try` block and a `finally` block.
2. Within the `try` block, there is a `return` statement that returns the value `10`. However, this `return` statement is within the `try` block.
3. Inside the `finally` block, there is another `return` statement that returns the value `20`. The `finally` block is guaranteed to execute, regardless of whether an exception is raised or not.
4. The `func` function is called using `print(func())`.
Now, let's understand how the code behaves:
When the `func` function is called, it starts executing the code within the `try` block.
It encounters the `return 10` statement and prepares to return the value 10.
However, before it actually returns the value, it reaches the `finally` block because of the `finally` keyword.
Inside the `finally` block, it encounters the `return 20` statement, and this statement takes precedence.
The `return 20` statement in the `finally` block causes the function to immediately exit and return the value 20.
As a result, when you call `func()`, it returns 20, and you see "20" printed to the console.
In a `try...finally` construct, if a `return` statement exists in both the `try` block and the `finally` block, the one in the `finally` block will take precedence and be the final return value.