【python进阶】函数参数解包

文章目录

我们知道函数的参数可以有位置参数和关键字参数,它们的定义类似:

def fun(*a, **b)

其中***都涉及到解包的情况,就是把后面的变量a b解析出来的步骤。
直接上代码:

def f(a, b, c, d):
    print(a, b, c, d)

f(*[1, 2], **{'c': 3, 'd': 4})

x = [1, 2]
y = {'c': 3, 'd': 4}
f(*x, **y)

# f([1, 2, 3, 4])

def f1(*a, **b):
    print(type(a), type(b))
    # f(a, b)
    f(*a, **b)

f1(1, 2, c=3, d=4)

代码中,注释的两行是会报错的两行,最后的打印结果是:

1 2 3 4
1 2 3 4
<class 'tuple'> <class 'dict'>
1 2 3 4

简单解释下,f1函数中a是一个元组,b是一个字典,如果需要f1里面需要调用f,那么我们仍然需要对参数进行打包后发送出去,否则,像被注释掉的f(a, b)这样调用,那么函数f是只能获取到两个参数的,但是f需要的是4个参数。

可以简单理解,如果参数里面看见了*a,那么你可以认为a其实就是一个元组了,**b,你可以认为b就是一个字典了。如果继续调用其它函数,你就需要知道别人需要什么参数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值