Python中的args和kwargs

本文详细介绍了Python中*args和**kwargs的使用方法及其注意事项。*args用于接收不定数量的位置参数,而**kwargs则用于接收关键字参数。文章通过具体实例展示了如何在函数中使用这两种特殊参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*args**kwargs

我在前面学习“类”的过程中遇到过这个东西,当时并没有太在意,但现在我发现许多代码里面都有它们的身影,还是挺重要的,所以就详细地查了查,在这里解释一下:

当函数的参数不确定时,可以使用*args**kwargs,*args没有key值,**kwargs有key值。这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。

**注意:**同时使用args**kwargs时,必须*args参数列要在**kwargs前。

比如,你想定义一个函数来求算术和,如果要求几个数的和不确定呢?数量过于庞大怎么办?
用代码展示一下:

def foo(x,*args):
	print(x)
	print(args)
 
foo(1,2,3,4,5)  #其中的2,3,4,5都给了args

运行结果:

1
(2, 3, 4, 5)

*args接收了后面四个数值,现在我们可以感受到它的作用了。如果你不确定你会用到多少参数,就用它。

用个例子:

def foo(*args):
    print(sum(args))

foo(1,2,3,4,5)

运行结果:15

**kwargs,正如上文,我们可以当它是个字典,用代码演示一下:

def foo(x,**kwargs):
    print(x)
    print(kwargs)
foo(1,y=1,a=2,b=3,c=4) #将y=1,a=2,b=3,c=4以字典的方式给了kwargs

运行结果如下:

1
{'y': 1, 'a': 2, 'b': 3, 'c': 4}

**注意!:**顺序必须是:位置参数、*args**kwargs(如果有默认参数的话,默认参数在位置参数后面)
否则会报错的。

正确示例:

def foo(x,*args,**kwargs):
    print(x)
    print(args)
    print(kwargs)
foo(1,2,3,4,y=1,a=2,b=3,c=4) #将1传给了x,将2,3,4以元组方式传给了args,y=1,a=2,b=3,c=4以字典的方式给了kwargs

运行结果:

1
(2, 3, 4)
{'y': 1, 'a': 2, 'b': 3, 'c': 4}

错误示例(顺序错误):

def foo(x,**kwargs,*args):
    print(x)
    print(args)
    print(kwargs)
foo(1,y=1,a=2,b=3,c=4,2,3,4)

运行结果:
SyntaxError: invalid syntax

如需转载,请注明原文出处,作者:vergilben

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值