In [40]: a = []
In [41]: def func():
....: a.append(1)
....: print a
....: print id(a)
....:
In [42]: id(a)
Out[42]: 140259931856696
In [43]: func()
[1]
140259931856696
In [44]:
1 所有变量为内存中一个对象的引用
2 list,dict等是可以修改的对象
3 当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系
4 函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改.
5 对于不可变变量,函数里的id和函数外的id不同
In [44]: a = 1
In [45]: def foo(a):
....: a = 2
....: print id(a)
....:
In [46]: id(a)
Out[46]: 36962648
In [47]: foo(a)
36962624