欢迎访问宙启技术站
智能推送

Python函数:global和nonlocal关键字的区别

发布时间:2023-06-03 02:55:41

在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关键字用于在嵌套函数中使用父函数中的变量,可以在父函数和嵌套函数之间共享变量,不能在函数外部和全局中使用。这两个关键字都可以用于共享变量,但需要注意使用方式和作用范围的不同。