函数引用变量:本地域,上层函数域,全局域,内置域
变量的声明必须在引用之前,本地覆盖全局,各类语言都类似
nonlocal:声明为外层变量
global:声明为全局变量
实例如下:
X=10#全局变量
Y=20#全局变量
C=30#全局变量
def test():
Y=40#test本地变量
print("test本地变量Y初始化为:",Y)
def test1():
Y=22#定义必须在引用之前
print("test1-X:",X," ","test1-Y:",Y)#搜索全局变量10,搜索test1本地变量22
#Y=22#定义必须在引用之前
def test2():
print("test2-X:",X," ","test2-Y:", Y)#搜索全局变量10,#搜索test本地变量200
def test3():
nonlocal Y#声明为外层变量
Y+=30#修改外层变量
def test4():
global C #声明为全局变量
C=60#修改了全局变量C的值
print("test函数调用内部函数结果如下:")
test1(),test2(),test3(),test4()#函数内部调用函数
print("test本地变量Y被内部函数test3修改后为:",Y)
print("test函数函数返回函数结果如下:")
return test1(),test2(),test3(),test4()
print("全局变量初始化为:X=%d,Y=%d,C=%d"%(X,Y,C))
test()
print("全局变量执行后为:X=%d,Y=%d,C=%d"%(X,Y,C))
D:\py\venv\Scripts\python.exe D:/py/func.py
全局变量初始化为:X=10,Y=20,C=30
test本地变量Y初始化为: 40
test函数调用内部函数结果如下:
test1-X: 10 test1-Y: 22
test2-X: 10 test2-Y: 40
test本地变量Y被内部函数test3修改后为: 70
test函数函数返回函数结果如下:
test1-X: 10 test1-Y: 22
test2-X: 10 test2-Y: 70
全局变量执行后为:X=10,Y=20,C=60
Process finished with exit code 0