首页
学习
活动
专区
工具
TVP
发布

函数的可变长参数

Python函数的可变长参数

引子

假如我们已经从Excel中读取到了一列数据,比如说是一队人的分数。我们尝试用Python来编写一个求总分的函数。

如果事先已知人数

如果人数实现已知,比如说只有两个人的时候,我们可能会编写如下函数:

这个函数的级别等同“hello world“。

让我们来看下这个函数的参数。这个函数的这种参数称为必选参数。也就是说,你必须给函数传递两个确定的参数,他才能输出正确结果。

如果你只传递了一个,对不起,函数撂挑子不干了。而且会给你拽一句英文:

如果某人分数也已知

标题中”也“的意思是说,人数已知的同时某人分数也已知,比如为10。这时候也许你会编写出下面这样的函数:

这个时候,再遇到上一节的只传递一个函数的情况,函数就不会撂挑子了,而是会给出正确结果。

但是,转折来了:一般情况下,我们很有可能不知道我们到底从excel读取了多少个数据,而且一般数量还还不小,即使知道了也不能用上面的方式去写了。论括号里到底可以写多少个参数??

可变长参数

当函数参数不可知的时候,也许,就需要写一个可变长参数的函数了。

在Python中,有两种可变长常数可选,分别是:

元组变长参数,参数名前面有一个

字典变长参数,参数名前面有两个

我们分别来看一下。

元组变长参数

我们用元组变长参数重写一个上面的那个求总分的函数:

defsum3(*nums):

print('nums: ',nums)

sum =

fornuminnums:

sum += num

print('sum = ',sum)

a =11

b =22

c =33

sum3(a,b,c)

运行下试试,结果如下:

nums: (11,22,33)

sum =66

可以看到输出的是被圆括号包含的三个数字,大家都知道,在Python中圆括号括起来的正是元组tuple(圆括号,元组......感觉名字还挺符合的,都是yuan)。

不定长参数,没有参数可不可以呢?

运行试试看。

输出结果:

nums: ()

sum =

字典变长参数

我们再用字典变长参数重写一个上面的那个求总分的函数:

defsum4(a=,**nums):

print('nums: ',nums)

sum = a

forkeyinnums:

sum += nums[key]

print('sum = ',sum)

sum4(a=11,b=22,c=33)

运行一下,输出结果如下:

a =11

nums: {'b':22,'c':33}

sum =66

可以看到输出的是被花括号包含的三个数字,大家都知道,在Python中花括号括起来的正是字典

字典可变长参数,或者叫关键字参数,允许你将不定长度的键值对, 作为参数传递给一个函数。

当然,与元组可变参数一样,这个参数也是可以为空的。

如果我们按照元组可变长参数的方式给sum4传递参数会发生什么呢?

比如我们运行下这么一句:

sum4(a,b,c)

结果函数又撂挑子不干了,而且对你说了一句英语:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G0FYXL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券