1. 程式人生 > >值傳遞vs引用傳遞

值傳遞vs引用傳遞

python語言 內存地址 產生 進行 引用傳遞 括號 pytho 不可 指向

值傳遞就是將變量指向的值進行復制形成副本,再傳遞到方法中進行操作,對變量原來指向的值不產生任何影響。而引用傳遞是將變量所指向的內存地址傳遞到方法中,方法操作變量時將會找到其對應的地址進行原位操作,所以會影響原變量。

而在python語言中函數名後面的括號中始終是傳對象引用,傳的是引用!!!也就是內存地址!!!無論是可變數據類型還是不可變數據類型,都是傳對象引用,只不過不可變數據類型其內存地址不可修改

For 不可變數據類型

1 def unchangeable(x):
2     x = 10#由於int 2是不可變數據,所以做了一個新的int 10 對象來讓x指向
3 cc=2 #變量cc指向2
4 unchangeable(cc) #將cc變量賦值給x,x參數此時指向int 2,看上 5 print cc #結果是2,此過程全局變量並沒有改變。

For 可變數據類型

1 def changeable(L):
2     L[0]=10 #為可變數據,故直接在內存地址操作修改。
3 try_list=[2] #指向字典
4 print(id(try_list)) #打印內存地址 5 changeable(try_list) #賦值給L,此時L也指向空字典地址。 6 print(try_list) #字典元素值被修改,影響了全局命名空間。
7 print(id(try_list)) #內存地址沒有發生改變。

值傳遞vs引用傳遞