在python中值傳遞和引用傳遞的說明

2021-10-07 13:11:56 字數 1024 閱讀 8939

值傳遞

在python中,萬物皆物件,那麼在傳遞乙個引數給函式進行使用的時候,如果這個引數的值是不可變物件,那麼python就會將引數的值傳進去進行操作,而不是傳遞其位址,在操作完成後會形成乙個新的物件,位址也會和之前傳遞的引數位址不同。

引用傳遞

但如果傳遞的引數是乙個可變物件,那麼實際就會將對這個可變物件的引用也就是位址傳遞進去,在對這個可變物件進行新增、修改或者刪除的操作後,還是那個物件,位址是不會改變的。

ef add_ele(x, y)

: x = x +

'abc'

'abc'

)return x, y

a ='abcd'

b =[

'a',

'b',

'c',

'd']

print

('a: '

, a,

id(a)

)print

('b: '

, b,

id(b)

)a, b = add_ele(a, b)

print

('a: '

, a,

id(a)

)print

('b: '

, b,

id(b)

)

執行這段**輸出如下

a:  abcd 2143526898032

b: ['a', 'b', 'c', 'd'] 2143525622280

a: abcdabc 2143527228144

b: ['a', 'b', 'c', 'd', 'abc'] 2143525622280

顯而易見,變數a作為不可變物件,在作為引數傳遞給函式add_ele時採用了值傳遞,而變數b作為可變物件,採取了引用傳遞的方式傳遞給函式。

Python中值傳遞和引用傳遞區別

python中對乙個函式可以傳遞引數,但是如何分辨是值傳遞還是引用傳遞,不是程式設計師手動控制的,而是python根據你傳入的資料物件,自動識別的。如果你傳入的引數物件是可變物件 列表,字典,這個時候就是引用傳遞,如果引數在函式體內被修改,那麼源物件也會被修改。如果你傳入的引數物件是不可變的物件 數...

Python中值傳遞和引用傳遞區別

python中對乙個函式可以傳遞引數,但是如何分辨是值傳遞還是引用傳遞,不是程式設計師手動控制的,而是python根據你傳入的資料物件,自動識別的。如果你傳入的引數物件是可變物件 列表,字典,這個時候就是引用傳遞,如果引數在函式體內被修改,那麼源物件也會被修改。如果你傳入的引數物件是不可變的物件 數...

c 中值傳遞和引用傳遞

物件在方法間傳值,傳遞的是物件的值,或者這個物件的引用的副本 首先建立乙個物件 public class orderinfo 建立乙個方法去改變這個物件 private void change orderinfo order 然後通過方法的呼叫檢視變化 private void btnchange ...