起因是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")