在python代码中,你会见到函数的参数是这样写的**kwargs,比如下面的函数定义:
def basicConfig(kwargs):
函数内容…
那么kwargs表示什么意思呢,又是如何使用的呢?
1、**kwargs表示的是一系列关键字参数,让调用函数者可以传入不定参数。比如basicConfig(filename=‘log.txt’, format=‘*’,等等关键字参数)
2、如何使用?
那函数内部是如何处理传进来的这些关键字参数呢,方法就是通过kwargs.pop()或者kwargs.get()。
那两者有何区别呢:
kwargs.get()用法:如果字典中有指定关键字,则返回其值,如没有则返回给定的默认值,默认值没有指定的话为None。
比如这样调用函数:basicConfig(force=True)
那么语句force = kwargs.get(‘force’, False)的结果是force=True,而basicConfig()的调用结果是force=False.
kwargs.pop()用法:如果字典中有指定关键字,返回其值,并删除关键字。如果没有则返回默认值。如果字典中没有指定关键字,同时没有指定默认值的话,会抛出一个KeyError的异常。所以pop()方法一般是要指定一个默认值的。
总结:
1、使用**kwargs不仅简洁而且方便后续函数扩展参数。
2、pop()方法需要指定默认值,否则抛出异常;而get()方法可以不需要(默认None)。
3、pop()方法在获取参数值的同时,也会删除参数项。