一道題帶你搞定Python函式中形參和實參問題

2021-10-06 03:59:46 字數 828 閱讀 7114

昨天在python學習群裡有位路人甲問了個python函式中關於形參和實參乙個很基礎的問題,雖然很基礎,但是對於很多小白來說不一定簡單,反而會被搞得稀里糊塗。人生苦短,我用python。

首先,大家一起看個栗子。

這個函式的輸出值是多少?很多人會回答7,其實程式執行之後,其答案是6,點解呢?

為什麼在這裡形參的數值並不改變實參的數值?

這裡需要給大家普及乙個python中的基礎,在python中,string(字串), tuples(元組), 和number(數值)是不可更改的物件,而list(列表),dict(字典)等則是可以修改的物件。

也就是說,這裡形參的數值對於外部的實參的數值(number型別,不可變)來說是沒有任何關係的,他們雖然是同乙個名字,但是其指向物件是不一樣的。所以當在程式最後進行列印a輸出值的時候,其輸出仍然是6。

下面這個栗子我們來看看可變的物件,以list(列表)作為實驗物件。

這個函式的輸出值是多少?很多人會回答[1,2],其實程式執行之後,其答案是[2,1]。

與第乙個栗子剛剛相反,這裡形參的數值呼叫把實參改變了。因為本例中引數傳遞的是列表,其是可更改的物件,在函式內部經過系列賦值變化之後,所以在程式執行之後其輸出值產生了變化。

最後感謝在python群中積極提問的好學者,然我們大家一起為學好python而奮鬥吧! 想學習更多python網路爬蟲與資料探勘知識,可前往專業**:

一道演算法題

兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...

一道演算法題

1.上午主要做了對翻譯任務的劃分,下午把 翻譯完畢。2.明天要講的演算法題 對乙個集合,求出其連續元素組成的子集中,和最大的子集 我對這道題的理解是 1 若集合中最小值大於0,意味著所有的都大於0,則最大的子集和,為所有值加起來 2 若集合中最大值小於0,意味著所有的都小於0,則最大的子集和,為集合...

一道演算法題

include using namespace std const int size 5 int max sub array const int a,int n,int m int max matrix const int a size int row,int col,int subsize int...