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

dcpeng發表於2020-05-14

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

為了解答大家的這個疑惑,小編在此舉個例子,希望大家能夠徹底的理解實參和形參在Python中的用法。

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

不可更改的物件

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

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

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

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

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

可更改的物件

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

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

山重水複疑無路,柳暗花明又一村。這道題經常會被招聘公司和企業拿去作為面試題,考察面試狗的Python基礎知識,希望大家好好參詳,日後碰到類似的問題加以注意,少走彎路!

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

相關文章