Python函數參數爲列表問題

def ADD(a):
        print(3,a,hex(id(a)))
        a.remove(2)
        print(3,a,hex(id(a)))
        a=a.append(10)
        print(3,a,hex(id(a)))
        return a
a=[1,2,3]
print(1,a,hex(id(a)))
b=ADD(a)
print(2,a,hex(id(a)))
print(2,b,hex(id(b)))

函數傳參的時候,如果參數是列表,那麼相當於是引用了。即形參和實參用的是同一個地址的內容,一旦修改也是直接修改對應地址的內容。
而在Python中,一旦形參a重新進行賦值操作,不論賦值爲什麼,地址都將改變。
但是這個時候,實參a,則不會相應更改,因爲它所指向的地址還在原來的位置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章