今天继续给大家介绍Python相关知识,本文主要内容是Python函数的参数传递进阶知识。
在上文Python函数详解(二)——函数的参数传递基础中,我们学习了Python函数中的必选参数和默认参数,今天,我们来介绍Python的其他类型的参数。
除了必选参数和默认参数外,Python还支持可变参数。
可变参数常常用于函数的输入个数不确定的场景。例如,我们要写一个函数,该函数可以计算所有输入的参数的平均值。我们自然可以将输入确定为一个元组或者序列,但是在引入了可变参数后,我们也可以将该函数的参数设置为可变参数。
可变参数在函数定义时,前面要用*标识,这样表示我们可以向函数中传入多个参数,传入的参数会被当作元组类型来使用。Python的可变参数定义及调用示例如下所示:
Python还支持一种关键字参数,这种参数与之前参数的区别在于在定义时使用两个*标识,在使用时必须用关键字参数来命名。这种参数在传入时,采用字典的方式来表示,这种参数使用示例如下所示:
目前,我们已经学习了很多Python的参数了,除了上述几种参数外,为了更加方便我们学习Python的函数,我们学习最后一种特殊的参数(在有的文章中不认为这是一种参数,而是作为必选参数的特殊情况)——命名关键字参数。
我们来看下面的例子:
从上图中可以看出,如果我们在定义函数的时候,将一个必选参数放在了可变参数的后面,那么我们在函数调用的时候如果按照位置来给函数的各个参数赋值时,就会发生错误,因为Python解释器无法分辨哪个是可变参数,哪个是必选参数。
事实上,尽管Python允许这样定义函数,但是这样定义的函数,必须在给后面的必选参数赋值时使用参数名称来赋值,正确调用该函数的方法如下所示:
对于这种特殊的参数,在本文中我们将其称为命名关键字参数。
我们已经讲解了很多Python函数中的参数种类了,那么当我们同时使用这些参数时,又有什么规则呢?总的来看,主要有以下4条规则:
1、默认参数必须在必选参数后面
2、在一个函数中最多只能有1个可变参数,最多只能有1个关键字参数
3、函数内部参数定义的规定顺序如下:必选参数、默认参数、可变参数、命名关键字参数以及关键字参数。
4、在函数调用参数赋值时,如果全部使用参数名称赋值,那么函数参数赋值的顺序任意。如果对部分参数使用名称赋值,部分使用位置赋值,那么有很大几率会出错。
其实,在真正编程开发时,很少会同时使用这么多参数,因为简直是“给自己找麻烦”,造成函数的可读性大大降低。但是,这不妨碍在一些考试以及面试中问到这么“无聊”的问题,因此本文最后的内容请有需要的同学参考学习!
最后,有关Python函数参数使用注意事项,请参考:Python函数详解(四)——Python函数参数使用注意事项。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200