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