Home >Backend Development >Python Tutorial >How Do Python Lambda Functions Handle Closure Capture, and How Can I Control It?
Understanding Closure Capture in Lambda Functions
In Python, the peculiar behavior of closures in lambda functions has perplexed developers. This article delves into the intricacies of closure capture, explaining exactly what is captured and how to control the capture mechanism.
The Capture Mechanism
Lambda function closures capture variables from their enclosing scope. These variables are effectively frozen at the time the closure is created. In the example provided, the lambda function captures the value of i from the for loop. However, when i is modified in subsequent loop iterations, the captured value remains unchanged in the closures.
Controlling Capture
To capture the current value of a variable, rather than the final value, a dummy parameter can be added with a default value. This technique forces the closure to capture the value of the variable at the time the closure is created.
In the modified code:
for i in [0, 1, 2, 3]: adders[i] = lambda a, i=i: i + a # dummy parameter with default value
The dummy parameter i has a default value of the current i in the loop. Therefore, each lambda function captures the value of i at the time it is created, resulting in the expected behavior where adders[1](3) returns 4.
Conclusion
By understanding the closure capture mechanism in Python, developers can control and manipulate closures effectively. Using dummy parameters with default values provides a robust method for capturing the current value of a variable, ensuring the correct execution of code.
The above is the detailed content of How Do Python Lambda Functions Handle Closure Capture, and How Can I Control It?. For more information, please follow other related articles on the PHP Chinese website!