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

函数作用域:了解Python中的局部变量和全局变量的作用范围

发布时间:2023-12-03 01:36:14

函数作用域是指变量在程序中的可见性和访问范围。Python中有两种作用域:全局变量和局部变量,它们的作用范围是不同的。

全局变量是在函数外部定义的变量,在整个程序中都可以被访问和使用。全局变量的作用范围是整个程序,从定义开始到程序结束。全局变量可以被任何函数使用,包括主函数和其他自定义函数。

例如,在下面的代码中,变量x是一个全局变量:

x = 10

def func():
    print(x)

func()

函数func可以访问和使用变量x,因为它是一个全局变量。输出结果为10

局部变量是在函数内部定义的变量,它们的作用范围仅限于函数内部。局部变量在函数调用结束后会被销毁,无法在其他函数中使用。

例如,在下面的代码中,变量y是一个局部变量:

def func():
    y = 20
    print(y)

func()

函数func可以访问和使用变量y,因为它是一个局部变量。输出结果为20

如果在函数内部要访问或修改全局变量,需要使用global关键字将其声明为全局变量。否则,Python会将其视为一个局部变量。

例如,在下面的代码中,通过global关键字将变量z声明为全局变量:

def func():
    global z
    z = 30
    print(z)

func()
print(z)

函数func可以访问和使用变量z,因为它被声明为一个全局变量。输出结果为3030

需要注意的是,在函数内部如果没有使用global关键字声明变量,Python会将其视为一个局部变量。如果在函数内部尝试修改全局变量,Python会创建一个新的局部变量,并不会改变全局变量的值。

例如,在下面的代码中,变量a被尝试在函数内部修改,但因为没有使用global关键字声明,所以Python会创建一个新的局部变量a

a = 40

def func():
    a = 50
    print(a)

func()
print(a)

函数func可以访问和使用变量a,但它是一个局部变量。因此,输出结果为5040

总结来说,全局变量是在函数外部定义的变量,可以在整个程序中被访问和使用;局部变量是在函数内部定义的变量,仅限于函数内部使用。如果要在函数内部访问或修改全局变量,需要使用global关键字声明。如果在函数内部使用和修改一个在函数外部定义的变量,Python会将其视为一个新的局部变量。