Python引數傳遞 引用傳遞 值傳遞

2021-07-12 01:19:17 字數 1123 閱讀 6640

值傳遞:方法呼叫時,實際引數把它的值傳遞給對應的形式引數,方法執行中形式引數值的改變不影響實際引數的值。

>>> a1 = 520

>>> a2 = a1

>>>

print a1

520>>>

print a2

520>>> a2 = a1 + 1

>>>

print a2

521>>>

print a1

520>>>

引用傳遞:也稱位址傳遞,在方法呼叫時,實際上是把引數的引用(傳的是位址,而不是引數的值)傳遞給方法中對應的形式引數,在方法執行中,對形式引數的操作實際上就是對實際引數的操作,方法執行中形式引數值的改變將會影響實際引數的值。

>>> a1 = [1,2]

>>> a2 = a1

>>>

print a1

[1, 2, 3]

>>>

print a2

[1, 2, 3]

>>>

在python中,數字、字元或者元組等不可變物件型別都屬於值傳遞,而字典dict或者列表list等可變物件型別屬於引用傳遞

如果要想修改新賦值後原物件不變,則需要用到python的copy模組,即物件拷貝。物件拷貝又包含淺拷貝和深拷貝。下面用例子來說明

import

copy

l1 = [[1,2],3]

l2 = copy.copy(l1)

l3 = copy.deepcopy(l1)

(4)(5)

(6)

最後的結果:

l1 = [[1, 2, 5], 3]

l2 = [[1, 2, 5], 3, 4]

l3 = [[1, 2, 6], 3]

從上例可以看出,copy.copy屬於淺拷貝,拷貝的是第一層list,而copy.deepcopy屬於深拷貝,對list所有子元素都進行深拷貝。

Python按值傳遞引數和按引用傳遞引數

python按值傳遞引數和按引用傳遞引數 按值傳遞引數 使用乙個變數的值 數字,字串 放到實參的位置上 注 傳遞過去的是變數的副本,無論副本在函式中怎麼變,變數的值都不變 傳遞常量 傳遞常量 定義乙個函式,輸出 歡迎,接收到的引數 name defhuanying name print 歡迎 nam...

Python中引數是引用傳遞,還是值傳遞

目前在使用python做開發,有乙個多月了,但是對python的引用傳遞和值傳遞,理解的不是很清楚,前幾天做乙個單子,其中將乙個引數作為初始化值傳遞給乙個介面,結果出了bug。問題主要是這樣的,客戶端做乙個介面,介面上面有三個框,主要是將候選字拖到裡面,那麼在服務端每個人都對應這樣乙個框,也就是需要...

值傳遞與引用傳遞 引數型別

根據儲存方式不同,我們將資料型別分為值型別和引用型別。值型別 基本資料型別 int float double boolean long 列舉 結構。儲存在棧當中的,提取資料快,但是分配空間多,耗資源,建議資料量少的情況下使用。引用型別 object型別 類 陣列 介面 值傳遞 1 直接傳遞值型別 結...