ad

《Python3快速入门与实战》_系统全面带领你学会Python_4.2.4 不定长参数

admin 147 2023-10-19

【摘要】 本书摘自《Python3快速入门与实战》一书中第4章,第2节,由肖冠宇、杨捷等编著。

4.2.4 不定长参数

有时需要一个函数能处理不定个数、不定类型的参数,这些参数叫作不定长参数,不定 长参数在声明时不会设置所有的参数名称,也不会设置参数的个数。

不定长参数有两种定义方式: 一种是不定长参数名称前有一个*表示把接收到的参数值 封装到一个元组中;另一种是不定长参数名称前有两个*表示接收键值对参数值,并将接收 到的键值对添加到一个字典中。

1. 带有一个*的不定长参数

例4- 5 计算任意多个数字的和(源代码位置: chapter04/4.2 函数参数.py)。

《Python3快速入门与实战》_系统全面带领你学会Python_4.2.4 不定长参数

案例代码如下:

#计算任意多个数字的和

def any num sum(*args)

print("args 参数值:",args)

print("args参数类型:",type(args))

rs=0

#判断元组是否不为空

if len(args)>0:

#循环遍历元组,累加所有元素的值

for arg in args:

rs+= arg

print("总和:{}".format(rs))

#函数调用

any num sum(20,30)

any num sum(20,30,40,50)

any num sum(20,30,40,50,60,70)

运行结果如下:

args 参数值: (20,30)

args 参数类型: class 'tuple>

总和:50

args 参数值:(20,30,40,50)

args 参数类型:

总和:140

args 参数值:(20,30,40,50,60,70)

args 参数类型:

总和:270

解析:不定长参数*args 接收任意个数的数字,并将函数调用传入的数字封装到元组 中。通过循环遍历元组,获取每个参数值,然后累加求和。不定长参数不仅可以接收数字类 型的参数值,还可以接收其他不同数据类型的参数值。在定义函数时,在不定长参数之前还 可以设置其他的参数。

2. 带有两个*的不定长参数

例4 - 6 每月在发工资之前,公司的财务要计算每个人的实发工资,这里我们使用一种 比较简单的工资计算方法:实发工资=基本工资-个人所得税一个人应缴社保费用,下面按照 这个工资计算方法编写一个工资计算器函数(源代码位置: chapter04/4.2 函数参数.py)。 ( 源 代码位置: chapter04/4.2 函数参数.py)。

案例代码如下:

def pay(basic,**kvargs):

print("kvargs参数值:",kvargs)

print("kvargs 参数类型:",type(kvargs))

#扣除个税金额

tax =kvargs.get("tax")

#扣除社保费用

social =kvargs.get("social")

#实发工资=基本工资-缴纳个税金额-缴纳社保费用

pay =basic-tax-social

print("实发工资:{}".format(pay))

#函数调用

pay(8000,tax=500,social=1500)

运行结果如下:

kvargs参数值: {tax:500,'social:1500}

kvargs参数类型:

实发工资:6000

解析:不定长参数**kvargs 接收了函数调用时传入的键值对形式的实参,通过运行结果 打印出的 kvargs 参数值和参数类型“dict”, 可以知道 kvargs 参数将接收到的参数值封装到 了字典中。

3. 拆包

当一个函数中设置了不定长参数,如果想把已存在的元组、列表、字典传入到函数 中,并且能够被不定长参数识别,需要使用拆包方法。下面通过示例详细介绍拆包的具体 使用方法。

例4-7 使用例4-5中定义的求任意多个数字和的函数 any num sum, 计算一个列表中 多个数字的和;使用例4-6 中定义的工资计算器,计算某个人的实发工资(源代码位置: chapter04/4.2函数参数.py)。

案例代码如下:

#求数字列表中所有元素的累加和

#数字列表

num list =[10,20,30,40]

#由于any num sum 函数设置了不定长参数*args,所以在传入列表时需要使用拆包方法"*列表" any num sum(*num list)

#打印一行分割线

print("---------------------")

#个人工资计算器

#发工资之前需要扣除的费用

fee dict ={"tax":500,"social":1500}

#由于pay 函数设置了不定长参数**kvargs,所以在传入字典时需要使用拆包方法"**字典" pay(8000,**fee dict)

运行结果如下:

args 参数值:(10,20,30,40)

args参数类型:

总和:100

kvargs参数值:{tax':500,'social':1500}

kvargs参数类型:

实发工资:6000

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Python3快速入门与实战》_系统全面带领你学会Python_7.1 第 7 章 异常处理
下一篇:《Excel达人手册:从表格设计到数据可视化》_快速成为表格大师_6.1.3 配套表格要齐全
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×