python不定长参数详解 |
您所在的位置:网站首页 › python元组传参 › python不定长参数详解 |
不定长参数
如果想要一个函数能不固定接收任意多个参数,可以使用不定长参数。 1.不定长参数两种基本形式:python自定义函数中有两种不定长参数,第一种是*XXX,在传入额外的参数时可以不用指明参数名,直接传入参数值即可。第二种是**XXX,这种类型返回的是字典,传入时需要指定参数名。 加了一个星号 * 不定长参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。加了两个星号 ** 的参数会以字典的形式导入,存放已命名的变量参数。 例如代码 #coding=utf-8 #第一个是元组形式,第二个是字典形式 def sun(*a, **b): print(a) print(b) sun(1, 55258, x=25412, y=5123512) (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)运行结果 在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))运行结果 当我们将普通参数写在不定长参数写在后面时 代码 #coding=utf-8 def JayChou(a, *b, c): print(a) print(b) print(c) JayChou(1, 555, 5768, 55451)运行结果 会出现如下报错,因此,位置不能随意更改 如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量 #coding=utf-8 #如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。 def void_tuple(a, *tuplela): print(a) for b in tuplela: print(b) return print(1) print(2, 3, 4, 5)运行结果
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |