python可变长参数遍历_Python的可变长参数

一、*args和**kwargs的概念

1、可以接收所有的实参,就是万能参数,也叫可变长参数,比如: *args,**kwargs

2、*的使用定义

函数定义时: *代表聚合

合数调用时: *代表打散(拆包)

3、*args:表示可以接收任意个数的位置参数,接收的参数之间以逗号隔开

args 约定成俗的叫法,换成其他名字也没有问题,只不过用的多了都叫这个名字

函数定义时一个星号(*)表示聚合,将所有的位置参数聚合成一个元组,赋值给了args这个变量

传入一个列表进去会被当成元组的一个元素

def test(*args):

print("args=",args)

print("args type:",type(args))

test(1,2,3)

# args= (1, 2, 3)

# args type:

test([1,2,3])

# 传入一个列表进去会被当成元组的一个元素

# args= ([1, 2, 3],)

# args type:

4、**kwargs:

kwargs 约定成俗的叫法,换成其他名字也没有问题,只不过用的多了都叫这个名字

函数定义时两个星号(**)表示聚合,将所有的关键字参数聚合成一个字典,赋值给了kwargs这个变量

def test(**kwargs):

print("kwargs=",kwargs)

print("kwargs type:",type(kwargs))

test(sex="boy",name="liming")

# kwargs= {'sex': 'boy', 'name': 'liming'}

# kwargs type:

二、正向传参和逆向传参

1、正向传参

*args和**kwargs混合使用,位置参数和关键字参数一 一传入到函数中

def test(*args,**kwargs):

print("args=",args)

print("args type:",type(args))

print("kwargs=",kwargs)

print("kwargs type:",type(kwargs))

test(1,2,3,sex="boy",name="liming")

# args= (1, 2, 3)

# args type:

# kwargs= {'sex': 'boy', 'name': 'liming'}

# kwargs type:

2、逆向传参

在程序已有列表、元祖、字典等对象的前提下,把他们的元素拆开传给函数

逆向参数需要在传入的列表、元组参数之前添加一个星号 ,在字典参数之前添加两个星号

不管是一颗星还是两颗星在函数调用时都表示打散传入的实参的所有元素到函数中

def test1(*args):

print("args=",args)

print("args type:",type(args))

print()

a = [4,5,6]

test1(*a)

# args= (4, 5, 6)

# args type:

test1(*[1,2,3])

# args= (1, 2, 3)

# args type:

def test2(**kwargs):

print("kwargs=",kwargs)

print("kwargs type:",type(kwargs))

print()

b={"name":"lixiao","age":18}

test2(**b)

# kwargs= {'name': 'lixiao', 'age': 18}

# kwargs type:

test2(**{"name":"lixiao","age":18})

# kwargs= {'name': 'lixiao', 'age': 18}

# kwargs type:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值