python不定长参数详解
生活随笔
收集整理的這篇文章主要介紹了
python不定长参数详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不定長參數
如果想要一個函數能不固定接收任意多個參數,可以使用不定長參數。
1.不定長參數兩種基本形式:
python自定義函數中有兩種不定長參數,第一種是*XXX,在傳入額外的參數時可以不用指明參數名,直接傳入參數值即可。第二種是**XXX,這種類型返回的是字典,傳入時需要指定參數名。
加了一個星號 * 不定長參數會以元組(tuple)的形式導入,存放所有未命名的變量參數。加了兩個星號 ** 的參數會以字典的形式導入,存放已命名的變量參數。
例如
代碼
2.實例
2.1實例一
不定長參數簡單示例,第一個是普通參數,第二個是不定長參數,我們可依次打印輸出,不定長參數為元組的形式,如b代表的是(55258,25412,5123512),而a作為普通參數,只能代表第一個1。
代碼
#coding=utf-8#不定長參數簡單示例,第一個是普通參數,第二個是不定長參數 def sun(a, *b):print(a)print(b)sun(1,55258,25412,5123512)運行結果
?2.2實例二
在a, *b, **c同時出現的時候,如下:
代碼
#coding=utf-8#使用不定長參數傳固定值,注意,b、c可省略,a不可省略 def fuzhi(a, *b, **c):print(a)print(b)print(c) fuzhi(853521, 65134, 635263, 45563, 365, x=99, y=999)運行結果
?個實例中,不定長參數b、c可省略,而普通參數a不可省略,假如我們省略a
代碼
#coding=utf-8#使用不定長參數傳固定值,注意,b、c可省略,a不可省略 def fuzhi(a, *b, **c):print(a)print(b)print(c) fuzhi()運行結果
?則會出現以上報錯情況
2.3實例三
當我們用不定長參數來累加時:
代碼
#coding=utf-8#用不定長參數實行累加 print(1, 2, 3, 4, 5)def sum(*nums):"""求多個數之和:param list_one: 接收數字的不定長參數,會把參數組裝成一個(tuple)元祖,賦值給不定長參數:return: 返回所有數字之和"""result = 0for num in nums:if isinstance( num, (int,float)):result = result + numreturn resultsum()print(sum(1, 2, 3))運行結果
?2.4實例四
當我們將普通參數寫在不定長參數寫在后面時
代碼
#coding=utf-8def JayChou(a, *b, c):print(a)print(b)print(c) JayChou(1, 555, 5768, 55451)運行結果
會出現如下報錯,因此,位置不能隨意更改
?2.5實例五
如果在函數調用時沒有指定參數,它就是一個空元組。我們也可以不向函數傳遞未命名的變量
#coding=utf-8#如果在函數調用時沒有指定參數,它就是一個空元組。我們也可以不向函數傳遞未命名的變量。 def void_tuple(a, *tuplela):print(a)for b in tuplela:print(b)returnprint(1) print(2, 3, 4, 5)運行結果
?
總結
以上是生活随笔為你收集整理的python不定长参数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NumpyPandas的区别和联系
- 下一篇: 购物车模块如何进行测试?