您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Python中怎么自定義函數與無限參數,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
如果要你表達 1 + 2 ,初學者都能寫出如下代碼:
這沒什么特別了不起的地方,但是下一次仍然是2個數值相加,但是我希望2個數值可以很方便修改:
為了方便修改,只要定義2個變量代表2個數值,放在代碼的最上方
但是,現在如果我希望在另一個地方執行,那么變量名字不能隨意修改,這非常不好。
此時,我們更希望有一個東西,能夠把2個變量以及變量之間的相加行為合并成一個東西,這就是函數:
行1:def 函數名字(參數1,參數2): 這定義一個函數
行2:函數中的行為是"把 a 和 b 相加,并把結果返回"。reutrn 返回值 ,可以返回任何東西,例如之前我們學過的列表、元組、字典等等,這里我們只是把 a + b 的結果(是一個數值)返回
行4:實際調用這個函數, 函數名字() ,表示執行某個函數。這里的括號非常重要
現在,mysum 已經是一個代表2個數值相加這一行為的函數,在任何地方都可以調用他得到結果:
之前我特別強調把2個變量以及變量之間的相加行為合并成一個東西
可以看到,雖然 mysum 函數中的參數同樣叫 a 和 b ,但是他們只在函數中才有效,不會受到外界同名的變量影響
現在函數看起來不錯,但是他離我們的期望還有很遠。如果我們希望對3個數求和,就要寫:
這太糟糕了!!!
我們希望 mysum 函數能接受任意多個數值,然后返回這些數值的總和。
任意個數值?這與列表有點相似吧。例如:
行3:x = x + n ,這會先執行等號右邊的 x + n ,其結果賦值給變量 x
行5:此時經過遍歷后累加的 x ,就是列表數值的總和
那么,要讓 mysum 函數接受無數個數值的辦法就是:
這似乎是一個辦法,但是調用的時候代碼很丑(看看上面的行8)
以前的調用 mysum(1,2) 多漂亮呀
有沒有一個辦法,能讓 Python 幫我收集 mysum 傳入的參數,放入一個列表中?
看看這個機制的表達:
行1:在參數 nums 前面添加一個 星號(*),表示調用時,可以傳入任意個參數,這些參數全收集到一個列表參數中
現在,mysum 這個自定義函數真不錯。
你心血來潮,嘗試之前那個丑陋的調用:
竟然報錯了
這似乎沒所謂,但是很多時候我們拿著一個列表的數值希望調用我們的 mysum 函數,并期望他直接給我正確的結果
有沒有一種操作,能自動把一個列表中的元素拆解成一個個的元素?
解決方法仍然是星號,就是這么巧合:
在調用的時候,在列表之前添加一個 星號(*),表示拆解這個列表[1,2,3]
有點混淆了,記住這個圖吧:
上述就是小編為大家分享的Python中怎么自定義函數與無限參數了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。