list作為實參傳給函式,如果在函式中形參list被改變,則實參list也會被改變。原因如下[1]:
在python中,資料有兩種型別:mutable(可變) 和 immutable (不可變)
list ,dict是mutable的;
int , string , float ,tuple是inmutable 的。
在函式引數的傳遞過程中:
對於inmutable object ,函式引數傳遞是值
對於mutable object,函式引數傳遞是指標(即位址)
所以,當我們把list傳給函式時,實際是把list的指標傳遞給了函式的變數,所以,list的值會隨著函式進行變化。
因此,在把list傳入函式前,應先用deepcopy做好備份。
【參考資料】
引數傳遞
python深拷貝和淺拷貝的區別
流作為函式實參
include include include include 使用setw必須 using namespace std void make neat ifstream messy file,ofstream neat file,int number after decimalpoint,int f...
陣列作為函式實參
陣列作為函式實參 c語言中陣列作為函式實參時,編譯器總是將其解析為指向陣列首元素位址的指標 位址呼叫 原因 我們知道c 語言函式的呼叫有傳值和傳位址呼叫。假設 c語言對陣列採用傳值呼叫 對實參作乙份拷貝,傳遞給被呼叫函式,函式不能修改實際實參值,而只能改變其拷貝 然後如果拷貝整個陣列,則在時間和空間...
將陣列作為實參傳遞
在c 中我們應該少用指標,多用引用,原因請大家自行搜尋。在傳遞陣列的時候我們需要格外注意,先讓我們看乙個簡單的範例。passarray.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std template void func1...