python什么是关键字参数_python笔记之强制函数以关键字参数传参

最近学习python,学到了函数传参,看到了以下这个特殊情况,特此来做个笔记

def add(*, x, y):

print(x, y)

以上函数定义后,该怎么传参?前面的那个*号是做什么用的?

我们可不可以照以下方式 传参?

add(5, 6, 7),这样传参可不可以?会不会有错?

我们来看结果

1156376-20180613104804210-1284988692.png

提示参数过多,看来这样传参不对

1156376-20180613104850478-700517957.png

看来这样也不行

1156376-20180613104924029-1318922088.png

这样也不可以,那怎么传才对呢?按道理上面的传法应该是正确的为什么还报错?

1156376-20180613105001908-4870254.png

这次终于对了,为什么呢,因为定义函数参数时候,如果定义了位置参数,并且在最前面加了*号,那么位置参数就必须以关键字的方式传参了,否则就会报错了。

来看下变种

def add(x, *, y, z):

print(x, y, z)

以上参数该怎么传?

add(5)可以吗?

1156376-20180613105525471-813284173.png

提示缺少2个参数, y z并且要求是关键字参数,那么第一个参数是正确的,只是缺少参数

1156376-20180613105617641-385133138.png

这次可以了,由此可见,*号后面的参数必须以关键字传参,*号前面是正常的位置参数,那么我们想下*args前后是不是也是这个道理呢?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值