Python引用傳值總結

2022-07-18 04:09:14 字數 663 閱讀 7451

python函式的引數傳值使用的是引用傳值,也就是說傳的是引數的記憶體位址值,因此在函式中改變引數的值,函式外也會改變。

這裡需要注意的是如果傳的引數型別是不可改變的,如string型別、元組型別,函式內如需改變引數的值,則相當於重新新建了乙個物件。

# 新增了乙個string型別的元素新增到末尾

def changelist(lis):

print lis

return

lis = [1, 2, 3]

changelist(lis)

print lis

得到的結果是:

[1,2,3, 'hello i am the addone']

[1,2, 3,'hello i am the addone']

def changestring(string):

string = 'i changed as this'

print string

return

string = 'hello world'

changestring(string)

print string

string是不可改變的型別,得到的結果是:

i changed as this

hello world

傳值 傳值引用

首先對傳值和傳引用要有個基本的概念 傳值 傳遞的是值的副本。方法中對副本的修改,不會影響到呼叫方。傳引用 傳遞的是引用的副本,共用乙個記憶體,會影響到呼叫方。此時,形參和實參指向同乙個記憶體位址。對引用副本本身 物件位址 的修改,如設定為null,重新指向其他物件,不會影響到呼叫方。直接上 更好的理...

java傳值與傳引用問題總結

1.基本型別與引用型別區別 對於基本型別 int long short double char byte float boolean 變數直接儲存資料的值 對於引用型別,變數儲存的是物件的位址,由此位址指向實際物件。如圖 對於基本型別,直接傳值,方法裡進行重新賦值不會導致原值改變 public cl...

python中的傳值和傳引用

和其他語言不一樣,傳遞引數的時候,python不允許程式設計師選擇採用傳值還是傳引用。python引數傳遞採用的肯定是 傳物件引用 的方式。實際上,這種方式相當於傳值和傳引用的一種綜合。如果函式收到的是乙個可變物件 比如字典或者列表 的引用,就能修改物件的原始值 相當於通過 傳引用 來傳遞物件。如果...