python函式的引數傳值使用的是引用傳值,也就是說傳的是引數的記憶體位址值,因此在函式中改變引數的值,函式外也會改變。
這裡需要注意的是如果傳的引數型別是不可改變的,如string型別、元組型別,函式內如需改變引數的值,則相當於重新新建了乙個物件。
# 新增了乙個string型別的元素新增到末尾
def changelist(lis):
lis.append('hello i am the addone')
print lis
return
lis = [1, 2, 3]
changelist(lis)
print lis
得到的結果是:
[1,2,3, 'hello i am the addone']
[1,2, aatefhzmt3,'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
傳值與傳引用
python的函式傳值和傳引用,和c c 語言是一樣的。在開始之前,我們有必要分清一下python的一些基礎概念。首先要說的是 變數 與 物件 在python中,型別屬於物件,變數是沒有型別的,這正是python的語言特性,也是吸引著很多pythoner的一點。所有的變數都可以理解是記憶體中乙個物件...
python 傳值與引用問題
和其他語言不一樣,傳遞引數的時候,python不允許程式設計師選擇採用傳值還是傳引用。python引數傳遞採用的肯定是 傳物件引用 的方式。實際上,這種方式相當於傳值和傳引用的一種綜合。如果函式收到的是乙個可變物件 比如字典或者列表 的引用,就能修改物件的原始值 相當於通過 傳引用 來傳遞物件。如果...
傳值 傳值引用
首先對傳值和傳引用要有個基本的概念 傳值 傳遞的是值的副本。方法中對副本的修改,不會影響到呼叫方。傳引用 傳遞的是引用的副本,共用乙個記憶體,會影響到呼叫方。此時,形參和實參指向同乙個記憶體位址。對引用副本本身 物件位址 的修改,如設定為null,重新指向其他物件,不會影響到呼叫方。直接上 更好的理...