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

时间:2021-02-03 23:21:20

 

 

 

 

 

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

def add(*, x, y):

    print(x, y)

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

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

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

我们来看结果

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

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

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

 

看来这样也不行

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

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

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

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

来看下变种

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

    print(x, y, z)

以上参数该怎么传?

add(5)可以吗?

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

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

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

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