在python中,參數的傳遞方式有兩種
- 引用傳遞
對於可變類型如列表,字典等,參數的傳遞時按引用傳遞的。
eg:
def fun(data):
data[0]=2
print(data) #[2,2,3,4]
print(id(data))
data1=[1,2,3,4]
fun(data1) #[2,2,3,4]
print(id(data1))
###輸出結果
[2, 2, 3, 4]
18026632 #data內存地址
18026632 #data1內存地址
可見,兩者的內存地址是一樣的,所以對於可變的數據類型,是按引用傳遞的,也就是說data1和data指向內存的同一塊地址。
- 值傳遞
相當於複製參數的值,這種傳遞的方式一般是對那些不可以改變的數據類型:字符串,元組,數字,集合等都是不可以改變的對象。
def fun(data):
data='abc'
print(id(data)) #次出輸入data的內存地址
data1='abcdefg'
fun(data1)
print(id(data1))
###輸出結果
16348528
17220696
由此可見 參數個data和data1不在同一個內存上,即是參數傳遞時複製了一份。