Code Explanation:
1. Defining a Function: make_funcs()
def make_funcs():
This defines a function named make_funcs.
The purpose of this function is to return a list of lambda functions.
2. Creating a List of Lambda Functions (Inside make_funcs)
return [lambda x: i * x for i in range(3)]
This line uses a list comprehension to create a list of lambda functions.
For each i in the range [0, 1, 2] (i.e., range(3)), it creates a lambda function: lambda x: i * x.
However, due to how closures and late binding work in Python, each lambda captures the same variable i, not its value at the time.
So, all lambdas will use the final value of i, which is 2 after the loop completes.
3. Calling the Function to Get the Lambdas
funcs = make_funcs()
This calls the make_funcs() function.
It returns a list of 3 lambda functions: [<lambda>, <lambda>, <lambda>], but all of them will use i = 2.
4. Executing Each Lambda Function with Argument 2
results = [f(2) for f in funcs]
This line calls each lambda function in the funcs list with x = 2.
Since all the lambdas use i = 2, each call computes 2 * 2 = 4.
So the list results becomes [4, 4, 4].
5. Printing the Final Result
print(results)
This prints the result list:
Output:
[4, 4, 4]
Download Book - 500 Days Python Coding Challenges with Explanation


0 Comments:
Post a Comment