函数作用域:了解Python中的局部变量和全局变量的作用范围
函数作用域是指变量在程序中的可见性和访问范围。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,因为它被声明为一个全局变量。输出结果为30和30。
需要注意的是,在函数内部如果没有使用global关键字声明变量,Python会将其视为一个局部变量。如果在函数内部尝试修改全局变量,Python会创建一个新的局部变量,并不会改变全局变量的值。
例如,在下面的代码中,变量a被尝试在函数内部修改,但因为没有使用global关键字声明,所以Python会创建一个新的局部变量a:
a = 40
def func():
a = 50
print(a)
func()
print(a)
函数func可以访问和使用变量a,但它是一个局部变量。因此,输出结果为50和40。
总结来说,全局变量是在函数外部定义的变量,可以在整个程序中被访问和使用;局部变量是在函数内部定义的变量,仅限于函数内部使用。如果要在函数内部访问或修改全局变量,需要使用global关键字声明。如果在函数内部使用和修改一个在函数外部定义的变量,Python会将其视为一个新的局部变量。
