首页 >后端开发 >Python教程 >如何在 Python 2.x 的闭包中访问非局部变量?

如何在 Python 2.x 的闭包中访问非局部变量?

Patricia Arquette
Patricia Arquette原创
2024-10-22 08:38:30505浏览

How can Nonlocal Variables be Accessed in Closures in Python 2.x?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn