电子说
01
用做不定长参数名
可以接收多个参数值
案例1:比如我定义一个求和的函数,无论传入几个值,都可以计算出求和的结果
代码1.1:
问题:以上代码实现传入2个参数值的和,但是如何我要求的是大于2个参数值的和,如:10+20+30=或者 1+2+3+4+5+..=这种情况下我们必须要重写add方法,往里面去加参数名,但是这种情况下,扩展性太差,脚本的维护性也不好。
因此我们的不定长参数的出现,就可以在不重写add方法的前提下,也能满足求多个参数值的和。
代码1.2:
总结:*num(不定长参数),可以接收0个或者N个值,接收的值会存储在一个元组中;调用函数的时候,要使用位置传值,也就是直接写值就可以。
02
用做解包,将可迭代对象中的元素解包
案例2:比如我定义一个函数,无论传入几个值,都可以计算出从传入值的和与乘积的结果,并获取和与积的结果
代码2.1:
总结:除了列表对象可以解包之外,任何可迭代对象都支持解包;可迭代对象包括元组、字典、集合、字符串、生成器实现了__next__方法的一切对象。但是字典解包后,只会把字典的 key 取出来,value 则丢掉了。
代码2.2:
解包也可以用在参数值的传递中
代码2.3:
总结:调用add方法时,直接传入一个tpl元组,则*num会把整个元组值作为一个参数值传入,就会变成((10,20),),那么对于add方法中的循环则无法计算结果。所以我们在调用函数时,将*tpl传入,会现将这个元组整体解包为2个元素值传入,用*num接收后就变成了(10,20)。这个时候对于add中的循环就可以去进行计算了。
03
常运用场景
结合DDT用作测试用例的多次执行
案例3:执行百度搜索,第一次搜索柠檬班,第二次搜索软件测试
代码3.1:
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !