python值傳遞和引用傳遞

2021-07-17 00:06:39 字數 685 閱讀 3580

關於值傳遞和引用傳遞,綜合目前各種的說法,可以得出這樣的結論:可變物件為引用傳遞,不可變物件為值傳遞。但是python中一切事物均視為物件,個人覺得值傳遞和物件傳遞只不過是物件引用的兩種表現。如果是可變物件的引用(比如字典、列表),就能修改物件的原始值,相當於通過傳引用來傳遞物件,不可變物件(如數字、字元、元組),就不能通過直接修改原始物件,相當於是通過傳值傳遞物件。

具體的表現就是當賦值(引用)列表或者字典時,如果改變引用的值,就修改了原始的物件。

>>> a=[1,2,3,4]

>>> b=a  #列表引用

>>> id(a) 

56454360

>>> id(b) #a,b的記憶體位址一樣,說明這裡是記憶體位址拷貝,可以理解為指標指向

56454360

>>> b

[1, 2, 3, 4, 5]

>>> a

[1, 2, 3, 4, 5]

複製**

而對於不可變物件

>>> i=1  

>>> i1=i #傳遞不可變物件數字

>>> i

1>>> i1

1>>> id(i)

23479136

>>> id(i1) #此時兩者記憶體位址相同,可以理解為指標指向

23479136

>>> i1=2 #改變i1的值

複製**

python的引用傳遞和值傳遞

函式的引用傳遞 對於函式輸入的引數物件,函式在執行過程中對物件本身進行操作 在執行結束後引數物件有可能發生改變函式的值傳遞 對於函式輸入的引數物件,函式執行中首先生成物件的乙個副本,並在執行過程中對副本進行操作。執行結束後物件不發生改變。python中不可選擇函式是引用傳遞 pass by refe...

值傳遞和引用傳遞

幾乎每種語言都有值傳遞和引用傳遞.下面是我的一些曲解,只講現象,不涉及到任何的原理,主要是鬧著玩的.a 新交了個女朋友b.有一天他女朋友b看見a在吃冰激凌,b想吃,但是a是個 座有點小潔癖,不想讓b吃,於是給b買了個新的冰激凌說你吃這個吧,別碰我嘴裡這個.這就是值傳遞.a和b的值沒有任何關係,他們一...

值傳遞和引用傳遞

1.什麼是值傳遞和引用傳遞 值傳遞 方法呼叫時,實際引數的值copy乙份傳遞給形式引數,此時,有兩個相等的數值分別儲存於不同的記憶體位址上,因此,後面的方法中都是對形參位址上的數值進行修改。引用傳遞 方法呼叫時,實際引數的值 也就是位址 copy乙份傳遞給形式引數,此時,形參和實參的引用都指向同一儲...