函数与变量作用域
1、全局变量与局部变量
全局变量:自赋值定义开始,后续代码都可以访问该变量;
局部变量:只能在被定义的函数内部被访问。
2、global关键字
函数内部默认只能读取全局变量的值,若需要修改全局变量,则需要使用global关键字进行事先声明,否则在函数内修改全局变量会报英文出错。
如下:
j=5
k=4
def sum():
global j #去掉global声明会报错
j=j+5
k=4
return k
print(sum(),k,j)
3、闭包(Closure)
闭包是介于全局变量和局部变量之间的一种特殊变量,使用方法如下:
j=5 #全局变量j
def sum0(): #外部函数sum0
k=2 #闭包变量k
def sum1(): #嵌套的内部函数sum1
i=k+j #局部变量i
return i
return sum1()
print(sum0()) #调用带闭包变量的函数sum0
# 结果为 7
全局变量,闭包变量,局部变量的使用范围关系如下:
全局变量>闭包变量>局部变量,闭包变量定义位置在外部函数与内部嵌套函数之间。