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

2021-09-12 06:33:09 字數 762 閱讀 4052

python中對乙個函式可以傳遞引數,但是如何分辨是值傳遞還是引用傳遞,不是程式設計師手動控制的,而是python根據你傳入的資料物件,自動識別的。

如果你傳入的引數物件是可變物件:列表,字典,這個時候就是引用傳遞,如果引數在函式體內被修改,那麼源物件也會被修改。

如果你傳入的引數物件是不可變的物件:數字,元組,字串,這個時候就是值傳遞。那麼源物件是不會改變的,

例子一:

import sys

a=2b=[1,2,3]

def change(x,y):

x=3y[0]=4

change(a,b)

print a,b

輸出結果: 2 [4, 2, 3];可以看出數字作為乙個不可變物件,a的值沒有變化,而b作為列表物件,是可變物件,所以b被改變了

例子二:

import sys

a="11111"

b=def change(x,y):

x="222"

y["a"]=4

change(a,b)

print a,b

輸出結果:11111 ,a作為字串是不可變物件,所以沒變化,b作為字典,是可變物件,所以被改變了

例子三:

import sys

a=(1,2,3)

b=def change(x,y):

x="222"

y["a"]=4

change(a,b)

print a,b

輸出的結果:(1, 2, 3)

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

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

c 中值傳遞和引用傳遞

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

JAVA中值傳遞和引用傳遞

浮點型 float,double 字元型 char 布林型 boolean 引用資料型別 實際引數 呼叫方法時寫的具體數值。public static void main string args public static void swap int a,int b a 20 b 10 num1 1...