python global和nonlocal用法解析

1. 全局变量与局部变量

在 Python 中,变量的作用域分为全局作用域和局部作用域。全局作用域中定义的变量可以在整个程序中访问,局部作用域中定义的变量只能在其所在的函数或代码块内访问。

全局变量是在函数外部定义的变量,可以在函数内部访问。

局部变量是在函数内部定义的变量,只能在函数内部访问。

下面通过示例代码来演示全局变量和局部变量的区别:

# 全局变量

global_var = 10

def my_function():

# 局部变量

local_var = 20

print(global_var) # 可以访问全局变量

print(local_var) # 可以访问局部变量

my_function()

# 输出结果:

# 10

# 20

在上述示例中,我们定义了一个全局变量 global_var 和一个函数 my_function。在函数内部,我们可以访问全局变量 global_var 和局部变量 local_var

2. 使用 global 关键字

如果我们在函数内部想要修改全局变量的值,可以使用 global 关键字。

global_var = 10

def change_global_var():

global global_var

global_var = 20

print(global_var) # 输出: 10

change_global_var()

print(global_var) # 输出: 20

在上述示例中,我们在函数 change_global_var 中使用了 global 关键字来声明 global_var 为全局变量。然后在函数内部修改了全局变量的值。在函数外部打印 global_var 的值,可以看到它已经被修改为 20。

3. 使用 nonlocal 关键字

除了使用 global 关键字来修改全局变量,我们还可以使用 nonlocal 关键字来修改嵌套函数中的变量。

在 Python 中,我们可以在一个函数内部定义另一个函数。被定义的函数称为内部函数。如果内部函数中引用了外部函数的变量,那么这个变量就被称为非局部变量。非局部变量不能在内部函数中直接修改,需要使用 nonlocal 关键字。

下面通过示例代码来演示使用 nonlocal 关键字:

def outer_function():

outer_var = 10

def inner_function():

nonlocal outer_var

outer_var = 20

inner_function()

print(outer_var) # 输出: 20

outer_function()

在上述示例中,我们定义了一个外部函数 outer_function,并在内部函数 inner_function 中使用了 nonlocal 关键字来声明 outer_var 为非局部变量。在内部函数内部修改了 outer_var 的值为 20。在外部函数中打印 outer_var 的值,可以看到它已经被修改。

总结

在 Python 中,全局变量可以在整个程序中访问,局部变量只能在其所在的函数或代码块内访问。如果要在函数内部修改全局变量的值,可以使用 global 关键字。如果要在内部函数中修改外部函数的变量,可以使用 nonlocal 关键字。

这些关键字的使用可以帮助我们在函数中灵活地操作变量,使得程序更加模块化和可维护。

后端开发标签