在 Python 2.x 中访问闭包中的非局部变量
Python 2.x 缺少 nonlocal 关键字,这会引发有关访问非局部变量的问题在闭包中。内部函数本质上可以读取非局部变量,但不允许重新绑定它们。
访问非局部变量的解决方法
尽管存在此限制,您仍然可以采用解决方法:
使用字典的示例
考虑以下基于维基百科示例的代码片段:
<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>
在这个例子中,字典数据用于存储非局部变量 y。内部函数可以增加 y 的值并返回更新后的值,而不会违反重新绑定非局部变量的限制。
以上是在 Python 2.x 中访问非局部变量:如何解决限制?的详细内容。更多信息请关注PHP中文网其他相关文章!