首页 >后端开发 >Python教程 >如何在Python中修改外部作用域中的非全局变量?

如何在Python中修改外部作用域中的非全局变量?

Barbara Streisand
Barbara Streisand原创
2024-12-16 12:06:15317浏览

How Can I Modify Non-Global Variables in Outer Scopes in Python?

在 Python 中修改外部作用域中的非全局变量

在 Python 中,函数内的变量通常属于局部作用域,除非显式声明为全局变量。但是,有时需要修改外部(封闭)但非全局范围中定义的变量。这个问题探讨了如何实现这一点。

给出示例代码:

def A():
    b = 1
    def B():
        # Access to 'b' is possible here.
        print(b)
        # Direct modification of 'b' fails.
    B()
A()

函数 B 中的变量 b 驻留在非全局封闭范围内。尝试直接修改 b 会导致 UnboundLocalError。不能使用 global 关键字,因为 b 没有在全局级别声明。

Python 3 解决方案:

非局部作用域 (Python 3.x) 可以是用于解决此问题:

def A():
    b = 1
    def B():
        nonlocal b  # Nonlocal keyword
        b = 2
    B()
    print(b)  # Output: 2
A()

Python 2解决方案:

可变对象(Python 2.x):

不要直接重新分配变量,而是使用可变对象(例如列表、字典)并改变它们的值:

def A():
    b = []
    def B():
        b.append(1)  # Mutation of 'b'
    B()
    B()
    print(b)  # Output: [1, 1]
A()

以上是如何在Python中修改外部作用域中的非全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

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