在 Python 2.x 中访问闭包中的非局部变量
在 Python 2.x 中,nonlocal 关键字,用于访问和重新绑定非局部变量闭包中的变量不可用。然而,内部函数仍然可以读取非局部变量,尽管有限制。
为了绕过缺少非局部关键字的问题,可以使用字典来存储数据。然后,内部函数可以访问和修改存储在字典中的对象,即使它们本身无法直接重新绑定非局部变量。
考虑以下示例:
def outer(): d = {'y' : 0} def inner(): d['y'] += 1 return d['y'] return inner f = outer() print(f(), f(), f()) #prints 1 2 3
这里,外部函数创建字典“d”并为其分配“y”值。内部函数可以访问并递增存储在字典中的“y”。结果是每次调用“f()”都会返回一个递增的值,这表明内部函数可以间接修改非局部对象。
以上是如何在 Python 2.x 的闭包中访问非局部变量?的详细内容。更多信息请关注PHP中文网其他相关文章!