您好,登錄后才能下訂單哦!
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Python中怎么自定義函數(shù)與無限參數(shù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
如果要你表達 1 + 2 ,初學者都能寫出如下代碼:
這沒什么特別了不起的地方,但是下一次仍然是2個數(shù)值相加,但是我希望2個數(shù)值可以很方便修改:
為了方便修改,只要定義2個變量代表2個數(shù)值,放在代碼的最上方
但是,現(xiàn)在如果我希望在另一個地方執(zhí)行,那么變量名字不能隨意修改,這非常不好。
此時,我們更希望有一個東西,能夠把2個變量以及變量之間的相加行為合并成一個東西,這就是函數(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é)果:
之前我特別強調(diào)把2個變量以及變量之間的相加行為合并成一個東西
可以看到,雖然 mysum 函數(shù)中的參數(shù)同樣叫 a 和 b ,但是他們只在函數(shù)中才有效,不會受到外界同名的變量影響
現(xiàn)在函數(shù)看起來不錯,但是他離我們的期望還有很遠。如果我們希望對3個數(shù)求和,就要寫:
這太糟糕了?。。?/p>
我們希望 mysum 函數(shù)能接受任意多個數(shù)值,然后返回這些數(shù)值的總和。
任意個數(shù)值?這與列表有點相似吧。例如:
行3:x = x + n ,這會先執(zhí)行等號右邊的 x + n ,其結(jié)果賦值給變量 x
行5:此時經(jīng)過遍歷后累加的 x ,就是列表數(shù)值的總和
那么,要讓 mysum 函數(shù)接受無數(shù)個數(shù)值的辦法就是:
這似乎是一個辦法,但是調(diào)用的時候代碼很丑(看看上面的行8)
以前的調(diào)用 mysum(1,2) 多漂亮呀
有沒有一個辦法,能讓 Python 幫我收集 mysum 傳入的參數(shù),放入一個列表中?
看看這個機制的表達:
行1:在參數(shù) nums 前面添加一個 星號(*),表示調(diào)用時,可以傳入任意個參數(shù),這些參數(shù)全收集到一個列表參數(shù)中
現(xiàn)在,mysum 這個自定義函數(shù)真不錯。
你心血來潮,嘗試之前那個丑陋的調(diào)用:
竟然報錯了
這似乎沒所謂,但是很多時候我們拿著一個列表的數(shù)值希望調(diào)用我們的 mysum 函數(shù),并期望他直接給我正確的結(jié)果
有沒有一種操作,能自動把一個列表中的元素拆解成一個個的元素?
解決方法仍然是星號,就是這么巧合:
在調(diào)用的時候,在列表之前添加一個 星號(*),表示拆解這個列表[1,2,3]
有點混淆了,記住這個圖吧:
上述就是小編為大家分享的Python中怎么自定義函數(shù)與無限參數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(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)容。