溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么自定義函數(shù)與無限參數(shù)

發(fā)布時間:2021-07-28 11:39:57 來源:億速云 閱讀:522 作者:Leah 欄目:大數(shù)據(jù)

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Python中怎么自定義函數(shù)與無限參數(shù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


為什么需要函數(shù)

如果要你表達 1 + 2 ,初學者都能寫出如下代碼:

Python中怎么自定義函數(shù)與無限參數(shù)

這沒什么特別了不起的地方,但是下一次仍然是2個數(shù)值相加,但是我希望2個數(shù)值可以很方便修改:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 為了方便修改,只要定義2個變量代表2個數(shù)值,放在代碼的最上方

但是,現(xiàn)在如果我希望在另一個地方執(zhí)行,那么變量名字不能隨意修改,這非常不好。

此時,我們更希望有一個東西,能夠把2個變量以及變量之間的相加行為合并成一個東西,這就是函數(shù):

Python中怎么自定義函數(shù)與無限參數(shù)

  • 行1:def 函數(shù)名字(參數(shù)1,參數(shù)2): 這定義一個函數(shù)

  • 行2:函數(shù)中的行為是"把 a 和 b 相加,并把結(jié)果返回"。reutrn 返回值 ,可以返回任何東西,例如之前我們學過的列表、元組、字典等等,這里我們只是把 a + b 的結(jié)果(是一個數(shù)值)返回

  • 行4:實際調(diào)用這個函數(shù), 函數(shù)名字() ,表示執(zhí)行某個函數(shù)。這里的括號非常重要

現(xiàn)在,mysum 已經(jīng)是一個代表2個數(shù)值相加這一行為的函數(shù),在任何地方都可以調(diào)用他得到結(jié)果:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 之前我特別強調(diào)把2個變量以及變量之間的相加行為合并成一個東西

  • 可以看到,雖然 mysum 函數(shù)中的參數(shù)同樣叫 a 和 b ,但是他們只在函數(shù)中才有效,不會受到外界同名的變量影響

現(xiàn)在函數(shù)看起來不錯,但是他離我們的期望還有很遠。如果我們希望對3個數(shù)求和,就要寫:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 這太糟糕了?。。?/p>


 

無限參數(shù)

我們希望 mysum 函數(shù)能接受任意多個數(shù)值,然后返回這些數(shù)值的總和。

任意個數(shù)值?這與列表有點相似吧。例如:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 行3:x = x + n ,這會先執(zhí)行等號右邊的 x + n ,其結(jié)果賦值給變量 x

  • 行5:此時經(jīng)過遍歷后累加的 x ,就是列表數(shù)值的總和

那么,要讓 mysum 函數(shù)接受無數(shù)個數(shù)值的辦法就是:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 這似乎是一個辦法,但是調(diào)用的時候代碼很丑(看看上面的行8)

  • 以前的調(diào)用 mysum(1,2) 多漂亮呀


有沒有一個辦法,能讓 Python 幫我收集 mysum 傳入的參數(shù),放入一個列表中?

Python中怎么自定義函數(shù)與無限參數(shù)

看看這個機制的表達:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 行1:在參數(shù) nums 前面添加一個 星號(*),表示調(diào)用時,可以傳入任意個參數(shù),這些參數(shù)全收集到一個列表參數(shù)中

現(xiàn)在,mysum 這個自定義函數(shù)真不錯。

你心血來潮,嘗試之前那個丑陋的調(diào)用:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 竟然報錯了

  • 這似乎沒所謂,但是很多時候我們拿著一個列表的數(shù)值希望調(diào)用我們的 mysum 函數(shù),并期望他直接給我正確的結(jié)果


 

解包

有沒有一種操作,能自動把一個列表中的元素拆解成一個個的元素?

Python中怎么自定義函數(shù)與無限參數(shù)

解決方法仍然是星號,就是這么巧合:

Python中怎么自定義函數(shù)與無限參數(shù)

  • 在調(diào)用的時候,在列表之前添加一個 星號(*),表示拆解這個列表[1,2,3]

有點混淆了,記住這個圖吧:

Python中怎么自定義函數(shù)與無限參數(shù)


上述就是小編為大家分享的Python中怎么自定義函數(shù)與無限參數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI