不定长参数
- 1.不定长参数两种基本形式:
- 2.实例
- 2.1实例一
- 2.2实例二
- 2.3实例三
- 2.4实例四
- 2.5实例五
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)
如果想要一个函数能不固定接收任意多个参数,可以使用不定长参数。
1.不定长参数两种基本形式:
python自定义函数中有两种不定长参数,第一种是*XXX,在传入额外的参数时可以不用指明参数名,直接传入参数值即可。第二种是**XXX,这种类型返回的是字典,传入时需要指定参数名。
加了一个星号 * 不定长参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。加了两个星号 ** 的参数会以字典的形式导入,存放已命名的变量参数。
例如
代码
#coding=utf-8#第一个是元组形式,第二个是字典形式
def sun(*a, **b):print(a)print(b)sun(1, 55258, x=25412, y=5123512)
运行结果
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)
运行结果
希望以上能够帮助你理解,有问题的话请留言,一起进步嘿嘿!