Python函数中使用global和nonlocal关键字
发布时间:2023-08-24 09:59:07
在Python中,global和nonlocal是两个特殊的关键字,用于修改变量的作用域。在函数内部,变量默认是局部变量,只在函数内部有效。然而,有时候我们需要在函数内部对外部的变量进行修改或访问。这就需要使用global和nonlocal关键字。
1. global关键字:
- 当在函数内部使用global关键字声明一个变量时,该变量会被视为全局变量,可以在函数内部和外部访问和修改。如果在函数内部对该变量进行修改,会影响到函数外部的变量。
- 例子:
x = 10
def func():
global x
x = 5
print(x)
func() # 输出结果为5
print(x) # 输出结果为5
- 在上面的例子中,通过使用global关键字声明变量x为全局变量,函数内部修改x的值为5,函数外部的x也被修改为5。
2. nonlocal关键字:
- 当在嵌套函数中使用nonlocal关键字声明一个变量时,该变量会被视为非局部变量,可以在内层函数和外层函数中访问和修改。如果在内层函数中对该变量进行修改,会影响到外层函数和全局作用域的变量。在全局作用域中无法使用nonlocal关键字。
- 例子:
def outer():
x = 10
def inner():
nonlocal x
x = 5
print(x)
inner() # 输出结果为5
print(x) # 输出结果为5
outer()
- 在上面的例子中,通过使用nonlocal关键字声明变量x为非局部变量,内层函数inner可以访问和修改外层函数outer的变量x,内层函数内部修改x的值为5,外层函数和全局作用域中的x也被修改为5。
总结:global关键字用于在函数内部声明一个变量为全局变量,可以在函数内部和外部访问和修改;nonlocal关键字用于在嵌套函数内部声明一个变量为非局部变量,可以在内层函数和外层函数中访问和修改。这两个关键字在函数中的使用可以方便地控制变量的作用域,实现对外部变量的访问和修改。
