Python 中函式傳參是傳值還是傳引用

2022-07-17 01:15:13 字數 1001 閱讀 9234

直接簡單的例子:

1

from ctypes import *

2import

os.path

3import

sys4

5def

test(c):

6print

"test before "7

print

id(c)

8 c+=2

9print

"test after +"10

print

id(c)

11returnc12

13def

printit(t):

14for i in

range(len(t)):

15print

t[i]

1617

if__name__=="

__main__":

18 a=2

19print

"main before invoke test"20

print

id(a)

21 n=test(a)

22print

"main afterf invoke test"23

printa24

print id(a)

結果如下:

>>>main before invoke test

test before

test after +main afterf invoke test

39601564

結論:python不允許程式設計師選擇採用傳值還是傳引用。python引數傳遞採用的肯定是「傳物件引用」的方式。這種方式相當於傳值和傳引用的一種綜合。如果函式收到的是乙個可變物件(比如字典或者列表)的引用,就能修改物件的原始值--相當於通過「傳引用」來傳遞物件。如果函式收到的是乙個不可變物件(比如數字、字元或者元組)的引用,就不能直接修改原始物件--相當於通過「傳值'來傳遞物件。

python函式傳參是傳值還是傳引用?

首先還是應該科普下函式引數傳遞機制 傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...

python函式傳參是傳值還是傳引用?

首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...

python函式傳參是傳值還是傳引用?

首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...