python3变量作用域详解

在Python中,变量的作用域决定了变量在程序中的可见性和访问范围。Python3中有三种不同的变量作用域:

1. 全局作用域(Global Scope):全局作用域中定义的变量可以在程序的任何地方访问。全局作用域在整个程序中都是可见的。
在函数外部定义的变量就是全局变量,可以在函数内部和外部访问。

示例代码:

x = 10    # 全局变量
def foo():
    print(x)    # 可以访问全局变量 x
foo()    # 输出 10


2. 局部作用域(Local Scope):局部作用域中定义的变量只能在其被定义的函数内部访问。局部作用域在函数被调用时创建,并在函数返回时销毁。

示例代码:

def foo():
    y = 20    # 局部变量
    print(y)    # 可以访问局部变量 y
foo()    # 输出 20
print(y)    # 报错,无法访问局部变量 y


3. 嵌套作用域(Enclosing Scope):嵌套作用域是指在一个函数内部定义的函数中创建的作用域。嵌套作用域中的变量可以在内外两个函数之间共享。

示例代码:

def outer():
    z = 30    # 嵌套作用域变量
    def inner():
        nonlocal z    # 使用 nonlocal 关键字声明 z 为嵌套作用域变量
        print(z)    # 可以访问嵌套作用域变量 z
    z = 40    # 修改嵌套作用域变量的值
    inner()
    print(z)    # 输出 40,内部函数修改了嵌套作用域变量的值
outer()


总结起来,Python3的变量作用域规则如下:

- 优先级:局部作用域 > 嵌套作用域 > 全局作用域
- 在函数内部,局部变量无法直接访问全局变量。如果要在函数内部访问全局变量,可以使用 global 关键字(例如 global x)声明该变量为全局变量。
- 在嵌套函数内部,可以使用 nonlocal 关键字(例如 nonlocal z)声明一个变量为嵌套作用域变量,以便在嵌套函数中访问和修改外部函数的局部变量。

你可能感兴趣的:(python,开发语言)