函数定义中的怪异*

时间:2018-12-07 09:26:12

标签: python python-3.x python-2.7

我在python中的函数定义中遇到了一个奇怪的情况,我读了一些这样的代码:

def abc(dd, *, ee=None): 
    print(dd, ee)

一开始,我认为这段代码是错误的,也许是*args的错字,但是最近我在最新的python3.7中尝试了这段代码,看来它可以解释,用法也超级好有线,您不能向该函数传递多个参数:

>>> abc(11, 222)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    abc(11, 222)
TypeError: abc() takes 1 positional argument but 2 were given
>>> abc(11)
11 None

我问是因为我不知道为什么有人这样写的目的,以及为什么python在Python3中支持这种行为(在python2中不支持)

1 个答案:

答案 0 :(得分:0)

似乎您的函数有1个位置参数和1个命名参数。 *会吃掉所有其他位置参数,就像*args一样,但是您无法引用它们。