Python函数:global和nonlocal关键字的区别
在Python中,global和nonlocal是两个重要的关键字。它们用于在函数中使用全局变量和嵌套函数的变量。虽然它们都可以用于共享变量,但它们在使用方式和作用范围上还是有所不同。
1. global关键字
global是一个Python中的关键字,它用于在函数内使用全局变量。当一个变量被声明为global时,它就可以被所有的函数所共享。比如,我们在函数外面声明一个变量,然后在函数内部修改它时,需要使用关键字global。
示例代码:
x = 10
def func():
global x
x = 20
func()
print(x) # 输出20
在这个例子中,我们声明了一个全局变量x,并将其值设置为10。然后我们定义了一个函数func,这个函数使用global关键字来声明x变量是全局的,然后将x的值修改为20。最后我们输出x的值,应该输出20。
需要注意的是,global关键字只能在函数内部使用,不能在函数外部使用。如果在函数外部使用global关键字,会发生语法错误。
2. nonlocal关键字
nonlocal是Python3.x中新增的一个关键字,它用于在嵌套函数中使用父函数中的变量。在函数内部声明一个变量为nonlocal时,它就可以在父函数和嵌套函数之间共享,但不能被全局使用。
示例代码:
def func1():
x = 10
def func2():
nonlocal x
x += 1
func2()
print(x)
func1() # 输出11
在这个例子中,我们定义了两个函数:func1和func2。在func1中,我们声明了一个局部变量x,并将其值设置为10。然后我们在func1中调用了func2函数,并在func2中使用nonlocal关键字来声明x变量可以在func1和func2之间共享。然后我们对x的值进行了加1操作,最后输出x的值,应该输出11。
需要注意的是,nonlocal关键字只能在嵌套函数中使用,不能在函数外部和全局中使用。如果在函数外部或者全局中使用nonlocal关键字,会发生语法错误。
总结
global关键字用于在函数内部使用全局变量,可以在函数内部和外部之间共享变量,不能在函数外部使用。nonlocal关键字用于在嵌套函数中使用父函数中的变量,可以在父函数和嵌套函数之间共享变量,不能在函数外部和全局中使用。这两个关键字都可以用于共享变量,但需要注意使用方式和作用范围的不同。
