python局部变量引用问题

 1 a = [1, 2]
 2 b = 'Immutable'
 3 def test():
 4     # global b
 5     print(a)
 6     a.append('asd')
 7     b = b + 'asd'   # 当只是引用变量b的值,如:filename=b,而非修改b的值时,不需声明全局b变量
 8     def test2():
 9         print(a)
10         print(b)
11     test2()
12 
13 test()
14 # 在python3中,若在局部中有改变不可变类型的全局变量的值的操作,无论先后顺序,系统会默认为将该变量作为局部变量不会再去全局寻找该变量的值,因此如上的代码,会报错:
16 # 解决办法是使用global将该变量变为全局变量。  另,在局部中增,删,改可变类型的全局变量的元素,不存在这个问题
原文地址:https://www.cnblogs.com/yum777/p/9124800.html