觀點: 1.傳引用 2.value 3.可變對象---引用 不可變對象--傳值對象
test1:圖片
我的理解:inc中的賦值產生了local nit
test2:test
test3:引用
可變對象:im
我的理解: test2爲何沒有被更新? 其實: 1.test2做爲可變對象傳入的是引用。 newlist和oldlist開始指向同一個對象。因此id開始相同img
2.=賦值語句執行後,ndwlist被指向到新的對象,而oldlist仍然指向原對象。 因此len>5操做的只是在newlist中,與odllist沒有關係。dll
本問題的關鍵再也不於傳什麼,而在於=賦值語句把咱們引到黑溝。new
=========================================================== In [1]: mylist = [1,'a',['foo','bar']]
In [2]: mylist2 = list(mylist)
In [3]: id(mylist2) Out[3]: 139664217589088 In [4]: id(mylist) Out[4]: 139664217638456
In [5]: var = myli mylist mylist2
In [5]: var = mylist[2]
In [6]: var2 = myli mylist mylist2
In [6]: var2 = mylist2[2]
In [7]: id(var) var var2 vars
In [7]: id(var) Out[7]: 139664204458968
In [8]: id(var2) Out[8]: 139664204458968
In [9]: