Python编程从入门到实践日记Day31
第7章 函数(七)
1.传递任意数量的实参 有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参。 例如,来看一个制作披萨的函数,它需要接受很多配料,但你无法预先确定顾客要多少种配料。下面的函数只有一个形参*toppings,但不管调用语句提供了多少实参,这个形参都将它们收入囊中: ![]() 形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。函数内的print语句通过生成输出来证明Python能够处理使用一个值调用函数的情形,也能处理使用三个值来调用函数的情形。它以类似的方式处理不同的调用,注意,Python将实参封装在一个元组中,即便函数只收到一个值也如此: ![]() 现在,我们可以将这条print语句替换为一个循环,对配料列表进行遍历,并对顾客点的披萨进行描述: ![]() 不管收到的是一个值还是三个值,这个函数都能妥善地处理: ![]() 不管函数收到的实参是多少个,这种语法都管用。 — 结合使用位置实参和任意数量实参 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。 例如,如果前面的函数还需要一个表示披萨尺寸大小的实参,必须将该形参放在形参*toppings的前面: ![]() 基于上述函数定义,Python将收到的第一个值存储在形参size中,并将其他的所有值都存储在元组toppings中。在函数调用中,首先指定表示披萨尺寸的实参,然后根据需要指定任意数量的配料。 现在,每个披萨都有了尺寸和一系列配料,这些信息按正确的顺序打印出来了—首先是尺寸,然后是配料: ![]() | _ |
如果大家有什么好的意见或建议,记得留言哦!