Code Explanation:
Function Definition: outer()
def outer():
This defines a function named outer.
Inside this function, we will build a list of functions and return them.
Initialize List to Store Functions
funcs = []
funcs is initialized as an empty list.
This list will hold the inner functions we define in the loop.
For Loop: Create Functions Dynamically
for i in range(3):
This loop will iterate 3 times with i taking values 0, 1, and 2.
Define inner Function with Default Argument
def inner(i=i):
return i * 2
A new function inner is defined on each loop iteration.
Key point: i=i is a default argument, which captures the current value of i at that point in the loop.
Without this, all inner functions would end up using the final value of i after the loop ends (commonly a bug).
The function returns i * 2.
Append Each Function to the List
funcs.append(inner)
The current version of inner is added to the funcs list.
Now funcs will hold 3 separate functions, each with its own captured i.
Return the List of Functions
return funcs
Once the loop is done, we return the list of 3 inner functions.
Unpack the Returned Functions
a, b, c = outer()
outer() returns a list of 3 functions.
These are unpacked into a, b, and c, which now each hold one of the inner functions.
Call the Functions and Print Results
print(a(), b(), c())
This calls each function and prints their returned values.
Let's see what each function does:
a() → First iteration → i = 0 → returns 0 * 2 = 0
b() → Second iteration → i = 1 → returns 1 * 2 = 2
c() → Third iteration → i = 2 → returns 2 * 2 = 4
Final Output
0 2 4
.png)

0 Comments:
Post a Comment