云上的天涯

导航

python笔记之强制函数以关键字参数传参

 

 

 

 

 

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

def add(*, x, y):

    print(x, y)

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

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

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

我们来看结果

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

 

看来这样也不行

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

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

来看下变种

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

    print(x, y, z)

以上参数该怎么传?

add(5)可以吗?

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

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

posted on 2018-06-13 10:51  云上的天涯  阅读(1747)  评论(0编辑  收藏  举报