Python是一种解释性语言,在编写代码时,变量的作用域是一个重要的问题。Python中的变量作用域分为局部变量和全局变量。局部变量是在函数内部定义的变量,全局变量是在函数外部定义的变量。
一、全局变量和局部变量
在Python中,定义变量时,变量默认是局部变量,局部变量只能在函数内部使用。全局变量定义在函数外部,可以在函数内部和外部使用。在函数内部定义全局变量时,需要使用global关键字。
x = 10 #全局变量
def func():
y = 20 #局部变量
global z #定义全局变量
z = 30
print("x=",x)
print("y=",y)
print("z=",z)
func()
print("x=",x)
print("z=",z)
输出结果:
x = 10 y = 20 z = 30 x = 10 z = 30
在上面的代码中,全局变量x可以在函数内部和外部使用。局部变量y只能在函数内部使用。在函数内部定义全局变量z时,需要使用关键字global。
二、函数中的变量作用域
在Python中,变量的作用域是相对的。在函数内部定义的变量可以在函数外部访问,但是函数外部定义的变量不能在函数内部直接访问。当函数内部和外部定义了同名变量时,函数内部使用的是局部变量。
x = 10 #全局变量
def func():
x = 20 #局部变量
print("x1=",x) #输出局部变量
func()
print("x2=",x) #输出全局变量
输出结果:
x1 = 20 x2 = 10
在上面的代码中,函数内部定义了一个局部变量x,但是函数外部也定义了一个同名变量x,所以在函数内部使用的是局部变量。
三、闭包中的变量作用域
闭包是指可以访问其他函数内部变量的函数。在Python中,闭包可以使用nonlocal关键字访问外部函数的变量。
def outer():
x = 10 #outer内的局部变量
def inner():
nonlocal x #使用nonlocal关键字访问outer的x变量
x = 20 #修改outer的x变量
print("inner x=",x)
return inner
f = outer()
f()
输出结果:
inner x = 20
在上面的代码中,函数inner使用了外部函数outer的变量x,并且通过nonlocal关键字修改了外部函数的变量。
四、总结
Python中变量作用域分为全局变量和局部变量。全局变量定义在函数外部,可以在函数内外使用。局部变量定义在函数内部,只能在函数内部使用。在函数内部定义全局变量时,需要使用global关键字。函数内部和外部定义同名变量时,函数内部使用的是局部变量。闭包可以访问外部函数的变量,并且使用nonlocal关键字访问外部函数的变量。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/240588.html
微信扫一扫
支付宝扫一扫