Python中 Global和Nonlocal的用法详解

1. Global的用法

在Python中,可以使用global关键字来声明一个全局变量。当在函数内部使用global关键字声明变量时,该变量会成为全局变量,可以在函数外部访问和修改它。

1.1 声明全局变量

要声明全局变量,可以在函数内部使用global关键字。

def set_global_variable():

global x

x = 5

set_global_variable()

print(x) # 输出:5

在上面的代码中,函数`set_global_variable()`内部使用了global关键字来声明x为全局变量。在调用该函数后,我们可以在函数外部访问和修改变量x的值。

1.2 修改全局变量

全局变量可以在函数内部进行修改。当函数内部使用global关键字声明一个变量后,Python会在函数内部使用该变量时,自动识别为全局变量。

x = 10

def modify_global_variable():

global x

x = x + 5

modify_global_variable()

print(x) # 输出:15

在上面的代码中,全局变量x的初始值为10。在函数`modify_global_variable()`内部,我们通过使用global关键字声明变量x,然后将x的值增加5。在调用该函数后,变量x的值被修改为15。

2. Nonlocal的用法

Nonlocal关键字用于声明一个非局部变量。当在嵌套函数中使用nonlocal关键字声明一个变量时,该变量会对函数外部的嵌套函数进行修改。

2.1 声明非局部变量

要声明非局部变量,可以在嵌套函数中使用nonlocal关键字。

def outer_function():

x = 10

def inner_function():

nonlocal x

x = 5

inner_function()

print(x) # 输出:5

outer_function()

在上面的代码中,外部函数outer_function()内部定义了一个变量x,并且在内部定义了一个嵌套函数inner_function()。在内部函数inner_function()内部,我们使用nonlocal关键字声明变量x为非局部变量。在调用内部函数后,变量x被修改为5,在外部函数中打印x的值为5。

2.2 修改非局部变量

非局部变量可以在嵌套函数中进行修改。当函数内部使用nonlocal关键字声明一个变量后,Python会在函数内部使用该变量时,自动识别为非局部变量。

def outer_function():

x = 10

def inner_function():

nonlocal x

x = x + 5

inner_function()

print(x) # 输出:15

outer_function()

在上面的代码中,外部函数outer_function()内部定义了一个变量x,并且在内部定义了一个嵌套函数inner_function()。在内部函数inner_function()内部,我们使用nonlocal关键字声明变量x为非局部变量,并将x的值增加5。在调用内部函数后,变量x被修改为15,在外部函数中打印x的值为15。

3. 总结

在Python中,使用global关键字可以声明全局变量,使得该变量在函数内部和外部都可以访问和修改。而使用nonlocal关键字可以声明非局部变量,使得该变量在嵌套函数内部和外部函数中都可以访问和修改。

在使用这些关键字时,需要注意它们的使用场景和作用范围,避免出现命名冲突和逻辑错误。

后端开发标签