【Python】函数的可变参数 *args 和 **kwargs的使用

发布时间 2023-03-30 15:05:45作者: Phoenixy

可变参数*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")

 

执行结果