python函数参数中的*args, **kwargs是什么意思:
你可能会想到c语言中的int main(int argc, char const *argv[]),但这二者意思完全不同。c语言的int main(int argc, char const *argv[])在我另一篇文章中有讲到,是为了确定传入参数个数和参数名称的,且是main函数特有的。
而在Python中,*args 和 **kwargs 是用来处理函数定义中可变数量的参数的特殊语法:
*args 用于传递非关键字参数列表(位置参数),它允许将不定数量的参数作为元组传递给一个函数。当函数被调用时,这些参数会被打包进一个元组中。例如:
def my_function(*args):
print(args)
my_function(1, 2, 3)
输出:
(1,2,3,)
****kwargs 用于传递关键字参数(键值对)**,它允许将不定数量的关键字参数作为字典传递给一个函数。当函数被调用时,这些参数会被打包进一个字典中。例如:
def my_function(**kwargs):
print(kwargs)
my_function(a=1, b=2, c=3)
输出:
{'a':1,'b':2,'c':3}
如果*args, **kwargs一起用, 则示例如下:
def my_function(*args,**kwargs):
print(kwargs)
my_function(1, b=2, c=3)
输出:
(1,)
{'b':2,'c':3}
那么你可能会问my_function(1, b=2, 3)会输出什么,答案是会报错,因为python规定位置参数不能在关键字参数后面。
当然c语言中也有类似的传入参数个数不固定的情况,是通过导入stdarg.h库解决的,具体可看我另一篇文章。