可变参数*args 和 **kwargs
*args和**kwargs主要用于定义函数的可变参数,*args和**kwargs组合起来可以传入任意的参数。(注意:参数*args 必须在 **kwargs 之前定义)
*args : *收集函数所有未匹配位置的参数 打包成 元组,即可变参数*args 类型为 tuple
**kwargs : **收集函数所有未匹配关键字参数 组成 字典,及可变参数**kwargs 类型为 dict
Tips:定义可变参数名称时,args和kwargs不是固定的,以前缀*和**为固定定义方式,即 * 定义的可变参数类型为tuple,** 定义的可变参数类型为dict
def func(*args, **kwargs): """ 可变参数 :param args: 非键值对的可变数量的参数列表 :param kwargs: 键值对的可变数量的参数列表 :return: """ logs.info("非键值对的可变参数列表:{}".format(args)) logs.info("键值对的可变数量的参数列表:{}".format(kwargs)) name = kwargs.get("name") if "name" in kwargs.keys() else "" addr = kwargs.get("address") if "address" in kwargs.keys() else "" ip = [i for i in args] logs.info("{} 客户名称:{} 的居住地址:{}".format(ip, name, addr)) if __name__ == "__main__": """run""" func(1, 8, name="lisi", address="beijing")
执行结果:
*args 非键值对的可变数量的参数列表
def func_tuple(*args): """ 可变参数 :param args: 非键值对的可变数量的参数列表 :return: """ logs.info("非键值对的可变参数列表:{}".format(args)) if __name__ == "__main__": """run""" func_tuple(1, 2, 3, 4)
执行结果
**kwargs 键值对的可变数量的参数列表
def func_dict(**kwargs): """ 可变参数 :param args: 非键值对的可变数量的参数列表 :param kwargs: 键值对的可变数量的参数列表 :return: """ logs.info("键值对的可变数量的参数列表:{}".format(kwargs)) if __name__ == "__main__": """run""" func_dict(name="zhangsan", age="14")
执行结果
标签:__,Python,kwargs,args,键值,可变,参数 From: https://www.cnblogs.com/phoenixy/p/17272674.html