Accessing Nonlocal Variables in Closures in Python 2.x
Python 2.x lacks the nonlocal keyword, which raises questions about accessing nonlocal variables in closures. Inner functions can inherently read nonlocal variables, but rebinding them is not permitted.
Workarounds for Accessing Nonlocal Variables
Despite this limitation, you can employ workarounds:
Example Using a Dictionary
Consider the following code snippet, based on Wikipedia's example:
<code class="python">def outer(): data = {'y': 0} def inner(): data['y'] += 1 return data['y'] return inner f = outer() print(f(), f(), f()) # prints 1 2 3</code>
In this example, the dictionary data is used to store the nonlocal variable y. The inner function can increment the value of y and return the updated value without violating the restriction on rebinding nonlocal variables.
The above is the detailed content of Accessing Nonlocal Variables in Python 2.x: How to Work Around the Limitations?. For more information, please follow other related articles on the PHP Chinese website!