Code Explanation:
1. funcs = []
What happens:
Creates an empty list named funcs that will later store lambda functions.
2. for i in range(3):
What happens:
Starts a loop where i takes values 0, 1, and 2 in sequence.
3. funcs.append(lambda i=i: i*i)
Key point: The lambda function is defined with a default argument i=i.
Why use i=i?
This binds the current value of i at each loop iteration to the lambda’s parameter i. It effectively “freezes” the value of i for that lambda.
What does the lambda do?
It returns i*i, the square of its argument i.
Effect:
Three lambda functions are created and appended to funcs:
First lambda has default i=0 → returns 0*0 = 0
Second lambda has default i=1 → returns 1*1 = 1
Third lambda has default i=2 → returns 2*2 = 4
4. for f in funcs:
What happens:
Iterates over each lambda function stored in funcs.
5. print(f())
What happens:
Calls each lambda function without any argument.
Because of default argument:
The lambda uses its default value of i captured during creation.
Output:
Prints the square of the captured i for each lambda:
0
1
4


0 Comments:
Post a Comment