极客小将

您现在的位置是:首页 » 原创课程 » Python

课程内容

Python入门课程NO58课 函数的可变参数

极客小将2020-08-27-
“可变”是指参数的数目是变化的,不确定的。在Python中定义函数时,给形参加上一个"*"或"**"的修饰符,那么该形参就是一个可变形参。使用*将实参收集为元组:在Python中定义函数时,在形参前面加一个"*"操作符,那么在执行函数调用时,Python

“可变”是指参数的数目是变化的,不确定的。在Python中定义函数时,给形参加上一个"*"或"**"的修饰符,那么该形参就是一个可变形参。

使用*将实参收集为元组:

在Python中定义函数时,在形参前面加一个"*"操作符,那么在执行函数调用时,Python解释器会将该参数位置处开始的实参全部收集到一个元组当中。举例说明:

由于可变形参是从左到右进行参数的收集,所以我们在定义函数时,通常是将可变形参置于普通形参的右边。

使用**将实参收集为字典:

定义函数时,使用**操作符对形参进行修饰,在调用函数时,Python会将该参数位置处开始的实参收集为字典类型。但是必须以关键字参数的方式来进行调用。我们将上面的例子修改一下,如下:

*args与**kwargs

*args 与 **kwargs是可变形参名称的通用写法,前者用来将实参打包成一个元组类型,后者用来将实参打包成一个字典类型。我们建议在实际定义函数的过程中,可以沿用这种通用的写法,也可以自行定义可变参数的名称。

对实参进行解包:

在定义函数时使用*或**,是将实参收集到元组或字典中。而在调用函数时使用*或**来进行修饰,则是将实参进行解包。所谓的解包,就是将数据集合中的元素取出,然后赋值给对应的参数。通常情况下我们用使用*对可迭代对象进行解包,使用**对字典进行解包

使用*对可迭代对象进行解包:迄今为止学过的可迭代对象有:字符串类型,列表,元组,字典,集合。在对字典,集合等类型进行解包时,解包出的元素为对应的键名。在实际开发中,通常使用**操作符对字典进行解包。

使用**对字典进行解包:对字典进行解包时,字典中的键名与函数中的形参名一一对应,实参即该键名所对应的键值。

以下举例说明:

使用*操作符定义可变参数时,Python会将该形参位置处开始的实参收集到元组中。

使用**操作符定义可变参数时,Python会将该形参位置处开始的实参收集到字典中。

网友点评

共有5条评论来说两句吧...

在线客服