Python函数可变参数(*args,**kwargs)详解,python函数中支持args和kwargs
本文将通过实例学习Python函数的可变参数*args和**kwargs的用法。实例非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
00-1010函数实例Python变量参数Python *argsPython **kwargs总结本文将通过实例学习Python函数的变量参数*args和**kwargs的用法。
知识准备:Python函数和Python函数参数
在Python编程中,我们定义一个函数来生成执行类似操作的可重用代码。为了执行这个操作,我们调用一个具有特定值的函数,在Python中称为function parameter。
目录
假设,我们定义一个将三个数相加的函数。
示例1:三位数相加函数
#定义函数
定义添加(x,y,z):
打印(f 总计3360 {x y z} )
#呼叫功能
加法(10,12,13)
当我们运行上述程序时,我们将输出以下结果:
共计: 35
在上面的程序中,我们有一个加法函数,有三个参数X,Y,z,当我们调用add()函数传递三个值时,我们得到这三个数的和作为输出。
接下来,让我们看看当我们在add()函数中传递超过3个参数时会发生什么。
#定义函数
定义添加(x,y,z):
打印(f 总计3360 {x y z} )
#呼叫功能
加法(5,10,15,20,25)
当我们运行上面的程序时,输出将是
TypeError: add()采用3个位置参数,但给出了5个
在上面的程序中,我们向add()函数传递了5个参数,而不是3个参数,得到了一个TypeError错误。
这显然不是我们想要的效果,那么应该如何解决这个问题呢?
如果我们实际调用,如果实参个数不确定,可以用变量形参的语法来解决。
函数示例
在Python中,我们可以使用特殊符号向函数传递可变数量的参数。
有两个特殊的符号3360。
*args:变量位置参数**kwargs:变量关键字参数当我们不确定函数中要传递的参数个数时,可以在函数定义中使用*args和**kwargs作为形参。
Python可变参数
和上面的例子一样,我们不确定可以传递给函数的参数的数量。还有*args,它允许我们向函数传递可变数量的非关键字参数。
在函数定义中,我们应该在参数名前使用星号*来传递变长参数。以参数元组的形式传递,这些传递的参数在函数内部使用。
与参数同名(不包括星号*)构成一个元组。
示例2:使用*args将可变长度参数传递给函数
#定义函数
定义添加(*编号):
总和=0
对于num:中的n
总和=总和
打印(f sum : {sum} )
#呼叫功能
加法(3,5)
加法(4,5,6,7)
加法(1,2,3,5,6)
在上面的程序中,我们使用*num来声明形参,这允许我们向add()函数传递一个变长的形参列表。在函数内部,我们有一个循环,
/>它把传递的实际参数相加,并打印结果。注意,这里调用了3次,分别传递了不同的值,它们的长度可变,作为函数的实际参数。
当我们运行上面的程序时,输出将是:
总和: 8
总和: 22
总和: 17
Python **kwargs
对于传递关键字参数这个问题,Python 有一个名为**kwargs
的解决方案,它允许我们将可变长度的关键字参数传递给函数。
具体做法是,在函数中,我们在参数名之前使用双星号**
来表示这种类型的参数。接收到的参数在函数内构成一个dict字典对象,
其名称与参数(不包括两个星号**
)相同。
示例3: 使用**kwargs
将可变关键字参数传递给函数
# 定义函数def intro(**data):
print("实参的数据类型是:",type(data))
for key, value in data.items():
print(f"{key} is {value}")
# 调用函数
intro(name="小佛", age=30)
intro(city="深圳", lan="Python", hobby="干饭")
在上面的程序中,我们定义了一个以**data
数据为形参的函数 intro ()。我们将两个长度可变的字典实参传递给intro()
函数。
我们intro()
函数中使用for循环,它对传递字典的数据项进行处理,并输出字典的值。
当我们运行上面的程序时,输出将是:
实参的数据类型是: <class 'dict'>
name:小佛
age:30
实参的数据类型是: <class 'dict'>
city:深圳
lan:Python
hobby:干饭
总结
值得注意的几点:
*args
和**kwargs
让函数变得非常灵活。*args
和**kwargs
是特殊的关键字,允许函数采用可变长度参数。*args
和**kwargs
是约定俗称的名称,可以自定义,例如*cat
,或者**dog
。*args
传递可变数量的位置参数,并且可以在其上执行元组的操作。**kwargs
传递可变数目的关键字参数,以便在其上执行字典的操作。
到此这篇关于Python可变参数*args和**kwargs的文章就介绍到这了,更多相关Python *args **kwargs内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。