*args
和 **kwargs
均为可变参数,方便记忆可以理解为 *args是列表形式的多个参数,不过它传值不是以list, 就是func(arg1, arg2, arg3...)
**kwargs可以理解为字典形式的多组key, value键值对,不过它传值也不是字典,而是func(a=1, b=2, c=3...)。
它们同时出现在func的定义中时,*args
在前, **kwargs
在后
**kwargs通常用在类的初始化多个配置项参数值传递。举一个pymongo的例子:
class MongoClient(common.BaseObject):
def __init__(
self,
host=None,
port=None,
document_class=dict,
tz_aware=None,
connect=None,
type_registry=None,
**kwargs):