python函式的傳參

2021-10-04 19:24:32 字數 1537 閱讀 4428

python引數傳遞採用的肯定是「傳物件引用」的方式。

這種方式相當於傳值和傳引用的一種綜合。如果函式收到的是乙個可變物件(比如字典或者列表)的引用,就能修改物件的原始值——相當於通過「傳引用」來傳遞物件。如果函式收到的是乙個不可變物件(比如數字、字元或者元組)的引用,就不能直接修改原始物件——相當於通過「傳值」來傳遞物件。

簡單的小例子: 傳列表和傳數字

def

change

(a):5)

b = a

return b

a =[1,

2,3,

4]print

(a)print

(change(a)

)print

(a)#a:[1, 2, 3, 4]

#b:[1, 2, 3, 4, 5]

#a:[1, 2, 3, 4, 5]

當傳的是字典型(dictionary)、列表型(list)時,如果是重新對其進行賦值,則不會改變函式外引數的值,如果是對其進行操作,則會改變。

原因是即變數中儲存的是引用, 是指向真正內容的記憶體位址, 對變數重新賦值,相當於修改了變數副本儲存的記憶體位址, 而這時的變數已經和函式體外的變數不是同乙個了, 在函式體之外的變數 , 依舊儲存的是原本的記憶體位址 , 其值自然沒有發生改變 。

def

change

(a):

# 這裡的傳入的a其實沒有被使用

a =[2

,3,5

,7,8

] b = a

return b

a =[1,

2,3,

4,5]

print

('a:'

+str

(a))

print

('b:'

+str

(change(a)))

print

('a:'

+str

(a))

def

change

(a):

a +=

1 b = a

return b

a =5

print

('a:'

+str

(a))

print

('b:'

+str

(change(a)))

print

('a:'

+str

(a))

#a:5

#b:6

#a:5

總結:

傳值、元組、字元,不改變函式外的變數。

傳字典和列表等可變的,如果進行操作,會改變;

如果進行賦值,不會改變函式外的變數。

python 函式傳參 傳參和傳引用

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

Python函式傳參

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

python 函式傳參

函式的好處 1.保持一致性 2.可重用 3.可擴充套件 函式的返回值 1.空,返回none 2.有乙個物件,返回當前物件 3.有多個物件,返回元組 tuple import time 定義函式,列印日誌時間 deflogger time format y m d x time current tim...