函数关键词传参后不能再有位置传参

2020年5月14日 / 3次阅读 / Last Modified 2020年5月14日
函数参数

python定义的函数,在调用的时候,可以基于位置传递参数值,也可以基于关键词传递参数值,但是关键词传参后不能再出现位置传参。(本文不涉及python3.7开始的新特性,/和*参数分隔符)

先上代码:

>>> def test_arg(a,b,c=3,d=4,e=5):
...   print(a,b,c,d,e)
...
>>> test_arg(1,2,3,4,5)
1 2 3 4 5
>>> test_arg(1,2)
1 2 3 4 5
>>> test_arg(1,2,e=9,d=9,c=7)
1 2 7 9 9
>>> test_arg(e=9,d=9,c=7,a=6,b=5)
6 5 7 9 9
>>> test_arg(a=1,2)
  File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument

test_arg函数有5个参数,其中后面3个有默认值。

我们调用test_arg时,可以全部使用位置传参的方式,这时就一定要注意各个参数的位置顺序。我们也可以在位置传参后,改为关键词传参,此时的关键词传参,可以乱序。如果全部采用关键词传参,也是OK的,完全乱序也OK。

但是,在关键词传参后,不能再出现位置传参!入上面代码最后一个测试出现的错误:SyntaxError: positional argument follows keyword argument

这是因为关键词传参时,可以乱序,因此规定关键词传参后,不可以再出现位置参数!

以上示例代码还说明了一个细节, 参数是否有默认值,都可以两个传参方式。但是,我们一般会把有默认的参数定义写在后面,因为如果是位置传参,而又不更新中间的有默认值的参数,就会出错。

-- EOF --

本文链接:https://www.pynote.net/archives/1918

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top