值傳遞vs引用傳遞
阿新 • • 發佈:2018-10-19
python語言 內存地址 產生 進行 引用傳遞 括號 pytho 不可 指向
值傳遞就是將變量指向的值進行復制形成副本,再傳遞到方法中進行操作,對變量原來指向的值不產生任何影響。而引用傳遞是將變量所指向的內存地址傳遞到方法中,方法操作變量時將會找到其對應的地址進行原位操作,所以會影響原變量。
而在python語言中函數名後面的括號中始終是傳對象引用,傳的是引用!!!也就是內存地址!!!無論是可變數據類型還是不可變數據類型,都是傳對象引用,只不過不可變數據類型其內存地址不可修改
For 不可變數據類型
1 def unchangeable(x): 2 x = 10#由於int 2是不可變數據,所以做了一個新的int 10 對象來讓x指向 3 cc=2 #變量cc指向24 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引用傳遞