python按引用傳遞引數

2021-07-28 12:27:34 字數 1400 閱讀 3840

本文是python入門到函式遇到的疑惑。

下面一段是基礎教程的原文python函式。

所有引數(自變數)在python裡都是按引用傳遞。如果你在函式裡修改了引數,那麼在呼叫這個函式的函式裡,原始的引數也被改變了。例如:

[python]view plain

copy

#!/usr/bin/python

# 可寫函式說明

defchangeme( mylist ):  

"修改傳入的列表",2

,3,4

]);  

print

"函式內取值: "

, mylist  

return

# 呼叫changeme函式

mylist = [10,20

,30];  

changeme( mylist );  

print

"函式外取值: "

, mylist  

傳入函式的和在末尾新增新內容的物件用的是同乙個引用。故輸出結果如下:

[python]view plain

copy

函式內取值:  [

10, 

20, 

30, [1, 

2, 3, 

4]]  

函式外取值:  [10

, 20

, 30

, [1, 2

, 3, 4

]]  

好,看到這裡,自己親手測試一下,**:

[python]view plain

copy

defprintme(age,str):  

str = 'str changed!'

print

age,str  

return

str = 'ori str'

age = 23

printme(age,str)  

print

str  

輸出結果:

[python]view plain

copy

23str changed!  

ori str  

好像**不對啊!不是說函式內部修改了引數的值,那麼實際引數也會變嗎?!難道它對字串和列表等還不是同等對待?

有經驗的人都知道,

在python中,strings, tuples, 和numbers是不可更改的物件,而list,dict等則是可以修改的物件

那麼,就記住紅色文字的這句話吧,你想修改不可更改的物件時,其實就開闢了乙個新的儲存空間新的物件,這就是為什麼還有個全域性作用域和區域性作用域的問題。

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

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

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

首先簡單說明一下,python中按值傳遞與按引用傳遞的區別 按值引數傳遞是指乙個變數的值來取代乙個函式引數的做法。如果這個值在函式 組中改變,對於呼叫這個函式的 來說,其中相應的變數值並不會受到任何影響,可以把這個引數認為是原變數值的乙個副本。按引用引數傳遞是指對於呼叫這個函式的 會維護這個 中變數...

C 中按引用傳遞引數

使用ref關鍵字來指定引數 static void showdouble ref int val val out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似,不同之處在於 ref 要求變數必須在傳遞之前進行初始化。若要使用 out 引數,方法定義和呼叫方法都必須顯式使用 out 關鍵字...