本文是python入門到函式遇到的疑惑。
下面一段是基礎教程的原文python函式。
所有引數(自變數)在python裡都是按引用傳遞。如果你在函式裡修改了引數,那麼在呼叫這個函式的函式裡,原始的引數也被改變了。例如:
[python]view plain
copy
#!/usr/bin/python
# 可寫函式說明
defchangeme( mylist ):
"修改傳入的列表",2
,3,4
]);
"函式內取值: "
, mylist
return
# 呼叫changeme函式
mylist = [10,20
,30];
changeme( mylist );
"函式外取值: "
, 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!'
age,str
return
str = 'ori str'
age = 23
printme(age,str)
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 關鍵字...