python中的*args和**kwargs

本文详细解释了Python中logging.warning函数的使用,涉及字符串格式化错误以及args和kwargs的区别。*args用于处理可变数量的位置参数,而**kwargs则处理关键字参数。通过实例演示了两者在实际编程中的应用。

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

起因是logging.warming函数的报错:

TypeError: not all arguments converted during string formatting

这是一个字符串格式化问题,查手册得:

logging.warning(msg*args**kwargs

在根日志记录器上记录一条 WARNING 级别的消息。 其他参数与行为均与 debug() 的相同。msg 是消息格式字符串,而 args 是用于字符串格式化操作合并到 msg 的参数。

到这里我知道这个函数怎么改了,但我发现我还从来没研究过过python中的args和*kwargs。

*args

def func(*args):
    for a in args:
        print(a)

func(2,"hello",-23)

输出为

2
hello
-23

打印tpye(args),结果为<class 'tuple'>,用python tutor看也是如此

*args可以处理处理可变数量的输入参数

**kwargs

**kwargs将接收所有传递给函数的关键字参数,并将它们作为一个字典传递给函数。

关键字参数是指在函数调用时使用关键字(即参数名)来传递参数的一种方式,如:func(name = "hello", nums = "20"),使用时可以用kwargs[key]

def func(**kwargs):
    if "a" in kwargs:
        print(kwargs['a'])
    if 'b' in kwargs:
        print(f"I will {kwargs['b']}")

func(a="hello world",b="go")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值