嵌套函数变量修改nonlocal & 全局变量修改global

前几天在做一个简单的界面,单击Radiobutton保存字符串,在一个嵌套函数里面修改外部函数。一直不知道怎么修改,上网查了一下,搜关键字“嵌套函数修改变量”,找了好久,才得以解决。

对于python 3来说

nonlocal:

嵌套函数中内部函数修改外部变量的值

没有加该关键字是不能修改的:

def outside():
a = 'a'
def inside():
a = 'b'
print(a)
inside()
print(a)
outside()
b
a

加关键字后是这样(不能 nonlocal a = 'b'):

def outside():
    a = 'a'
    def inside():
        nonlocal a
        a = 'b'
        print(a)
    inside()
    print(a)
outside()
b
b

global:

函数内部修改全局变量的值

a = 'a'
def test():
    global a
    a = 'b'
    print(a)
test()
print(a)
b
b

 如果外部数据类型是列表,append后可直接改变外部变量:

def test():
    a.append('A')
    print(a)
test()
print(a)
['A']
['A']

 列表的情况在嵌套函数也一样。

原文地址:https://www.cnblogs.com/lyuzt/p/9445947.html