广东网页空间网站平台,长沙网站建计,网页设计制作报价,空港经济区内的建设工程网站Python允许函数从调用语句中收集任意数量的实参。例如下面自定义函数制作一个披萨#xff0c;它需要接受很多配料#xff0c;但无法预先确定顾客要点多少种配料。
下面行数只有一个形参*toppings#xff0c;不管调用语句提供多少个实参#xff0c;这个参数都会收集到…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