不定长参数
- 1.不定长参数两种基本形式:
- 2.实例
- 2.1实例一
- 2.2实例二
- 2.3实例三
- 2.4实例四
- 2.5实例五
如果想要一个函数能不固定接收任意多个参数,可以使用不定长参数。
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 = 0
for num in nums:
if isinstance( num, (int,float)):
result = result + num
return result
sum()
print(sum(1, 2, 3))
运行结果
2.4实例四
当我们将普通参数写在不定长参数写在后面时
代码
#coding=utf-8
def 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)
return
print(1)
print(2, 3, 4, 5)
运行结果
希望以上能够帮助你理解,有问题的话请留言,一起进步嘿嘿!