[Python] 传递参数前面的*或**

Python传递参数前面的*或**

先上结论:

func(*[1, 2, 3])  ==  func(1, 2, 3)
func(**{'name':'Spade_', 'number':'888888'}) == func(name='Spade_', number='888888')

如果你不懂Python四种常用的传参方式,参考:[Python] 仅限位置参数和仅限关键字参数

1. 单星号 * 解析可变参数

传递参数前面的*,和不带星号的使用,func()是一个接收可变参数的函数。

func(*[1, 2, 3])  ==  func(1, 2, 3)
func([1, 2, 3])

def func(*args): pass

我们打印一下,看看结论

def func(*args):
    print(args)
    for i in args:
        print(i)
        
func(*[1, 2, 3])
print("======")
func([1, 2, 3])
(1, 2, 3)
1
2
3
(1, 2, 3)
1
2
3
======
([1, 2, 3],)
[1, 2, 3]

我们看到,*将[1,2,3]解析成了参数1, 2, 3。

2. 双星号 * 解析可变关键字参数

def func(**kwargs):
    print(kwargs)
    for k, v in kwargs.items():
        print(k, v)

func(**{'name':'Spade_', 'number':'888888'})
print("======")
func(name='Spade_', number='888888')
{'name': 'Spade_', 'number': '888888'}
name Spade_
number 888888
======
{'name': 'Spade_', 'number': '888888'}
name Spade_
number 888888

我们可以看到结果和开头结论是一样的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值