我在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中不支持)
答案 0 :(得分:0)
似乎您的函数有1个位置参数和1个命名参数。 *
会吃掉所有其他位置参数,就像*args
一样,但是您无法引用它们。