python--nonlocal

nonlocal 学习:修改函数外层函数包含名字对应的值(不可变类型)
示范1:
x=11
def f1():
    x=22
    def f2():
        x=33
        print(x) #输出f2的值
    f2()
    print(x)#输出的是f1的值
f1()
print(x)#输出的就是全局的值
33
22
11

示范2:

x=11
def f1():
    x=22
    def f2():
        global x 
        x=33 #局部修改全局的值
        print(x)
    f2()
    print(x)
f1()
print(x)
33
22
33

示范3:

x=11
def f1():
    x=22
    def f2():
        nonlocal x #局部修改上一层函数的值
        x=33  
        print(x)
    f2()
    print(x)
f1()
print(x)
33
33
11
原文地址:https://www.cnblogs.com/clairedandan/p/14128010.html