嵌套函数变量修改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']

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

 

posted @ 2018-08-08 21:57  大数据的奇妙冒险  阅读(369)  评论(0编辑  收藏  举报