函数中全局变量和局部变量作用域的一些理解

>>> def change_list(a):
    a = [2,3,4]

    
>>> a= [1,2]
>>> change_list(a)
>>> a
[1, 2]

这个问题是,为什么可变类型的数据无法改变?

>>> def change_list(a):
    a .append(3)

    
>>> a= [1,2]
>>> change_list(a)
>>> a
[1, 2, 3]

这个却可以改变

>>> a= [1,2]
>>> def change_list(a):
    a .append(3)
    print(id(a))

    
>>> id(a)
27808584
>>> change_list(a)
27808584
>>> a
[1, 2, 3]
>>> def change_list(a):
    a =[1,2,3,4]
    print(id(a))

    
>>> a = [1,2]
>>> id(a)
33581320
>>> change_list(a)
27808328
>>> a
[1, 2]

看到这个估计就明白了

原文地址:https://www.cnblogs.com/vincent-sh/p/13082268.html