Python学习笔记——自定义函数(传递任意数量的实参)

Python允许函数从调用语句中收集任意数量的实参。例如下面自定义函数制作一个披萨,它需要接受很多配料,但无法预先确定顾客要点多少种配料。

下面行数只有一个形参*toppings,不管调用语句提供多少个实参,这个参数都会收集到:

形参名*toppings中的*号让Python创建一个名为toppings的元组,该元组包含函数收到的所有的值,在函数体内可以使用toppings元组,从而实现接受任意数量的实参。

(1)结合使用位置参数和任意数量的实参

Python允许函数接受不同类型的实参,位置实参和任意数量实参结合使用,但是任意数量实参的形参比如放在其它位置形参的最后。参考如下代码可以更好理解:

注意:经常看到通用的形参名*args,它就是如上收集任意数量的位置实参。

(2)任意数量的关键字实参

有时候,函数需要接收任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,Python允许函数编写称能够接收任意数量的键值对——调用语句提供多少就接收多少。

下面代码定义的bulid_profile()函数创建一个用户简介,不仅接收名和姓,还接收任意数量的关键字实参:

Python定义函数,形参**user_info中的两个**,将创建一个名为user_info的字典,该字典包含收到的其它所有名值对。我们调用build_profile()函数,向它传递姓名('liuzx')、年龄(18),以及两个键值对(家庭住址='黄河路77号',学历='博士')。函数产生一个类型为字典的实参,实参变量名为user_info,里面收集了调用时传入的键值对(家庭住址='黄河路77号',学历='博士'),并在函数体内,增加两个键值对('姓名'='liuzx','年龄'=18),函数最后把user_info 字典变量作为函数的返回值。

注意:在Pyhton中,经常可以看到**kwargs,它常用于收集任意数量的关键值实参。

在编写函数时,Python还允许混合位置实参,任意数量的实参、任意数量的关键字实参,样式如下:

def function_name(name,age,*args,**kwargs):
    '''
    位值形参:name,age
    任意数量实参:args(元组)
    任意数量关键字实参:kwargs(字典)
    '''
    pass

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值