*args、**kwargs用法笔记

*args、**kwargs用法:

使用 *args、**kwargs可以传递多个参数

*args、**kwargs在Python中的代码中经常会见到这两个词。 args 和 kwargs,前面通常还会加上一个或者两个星号。其实这只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。这其实就是 Python 中可变参数的两种形式,并且 *args 必须放在 **kwargs 的前面,因为位置参数在关键字参数的前面。

代码引用来自于此链接:

def test_args(first, *args):
    print("第一个必填参数的值:", first)
    print(type(args))
    for arg in args:
        print("其余可选参数的值:", arg)


def test_kwargs(first, *args, **kwargs):
    print("第一个必填参数的值:", first)

    print(type(kwargs))
    for arg in args:
        print("其余可选参数的值: ", arg)

    for k, v in kwargs.items():
        print("可选且指定了名称的参数:%s=%s" % (k, v))


if __name__ == '__main__':
    test_args(0)
    print()

    test_args(1, 2, 3, 4)
    print()

    test_kwargs(0)
    print()

    # 错误使用,第一个参数已指定名称,无法自定义
    # test_kwargs(k0=1)

    test_kwargs(0, k1=1)
    print()

    test_kwargs(1, 2, 3, 4, k1=5, k2=6)
    print()

    # **将字典展开为参数
    params = {'a': 11, 'b': 12, 'c': 13}
    test_kwargs(0, **params)

在这里插入图片描述
代码引用自此链接:


"""
args: 以元祖的形式存放多个参数
kwargs:以字典的形式传递多个参数
"""


def fun1(*args):
    print("args = ", args)  # 存放了所有的参数


def fun2(x, *args):
    print("x = ", x)
    print("args = ", args)  # 存放了除x外所有的参数


def fun3(x, y=1, *args):
    print("x = ", x)
    print("y = ", y)
    print("args = ", args)  # 存放了除x和y外所有的参数


def fun4(x, *args, y=1):
    print("x = ", x)
    print("y = ", y)  # 保持默认值
    print("args = ", args)  # 存放了除参数x外的所有的参数


def fun5(**kwargs):
    print("kwargs = ", kwargs)  # 以字典格式存放了所有的参数


def fun6(x, **kwargs):
    print("x = ", x)
    print("kwargs = ", kwargs)  # 以字典格式存放了除x外所有的参数


def fun7(x=1, **kwargs):
    print("x = ", x)
    print("kwargs = ", kwargs)  # 以字典格式存放了所有的参数


def fun8(x, *args, **kwargs):
    """注意调用顺序
    """
    print("x = ", x)
    print("args = ", args)
    print("kwargs = ", kwargs)  # 以字典格式存放了所有的参数


if __name__ == "__main__":
    print("fun1 result:")
    fun1(1, 2, 3, 4, 5)
    print("fun2 result:")
    fun2(1, 2, 3, 4, 5)
    print("fun3 result:")
    fun3(1, 2, 3, 4, 5)
    print("fun4 result:")
    fun4(1, 2, 3, 4, 5)
    print("fun5 result:")
    fun5(x1=1, x2=2, x3=3, x4=4, x5=5)  # 调用时需要指定变量名
    print("fun6 result:")
    fun6(x=1, x2=2, x3=3, x4=4, x5=5)  # 需要给定x的值
    print("fun7 result:")
    fun7(x1=1, x2=2, x3=3, x4=4, x5=5)  # 可以不指定x的值(缺省值)
    print("fun8 result:")
    fun8(1, 2, 3, x1=1, x2=2, x3=3)  # x=1, args=(2,3), kwargs={"x1": 1, "x2": 2, "x3": 3}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值