我想知道为什么这是Python 3.4中的SyntaxError:
some_function(
filename = "foobar.c",
**kwargs,
)
在**kwargs
之后删除尾随逗号时可以正常工作。
答案 0 :(得分:10)
正如vaultah所指出的那样(由于某些原因,他没有费心去发布答案),这是reported on the issue tracker并且自那以后一直在改变。从Python 3.6开始,语法可以正常工作。
要明确,是的,我想在
*args
或**kwds
之后允许使用尾随逗号。这就是补丁的作用。 - Guido van Rossum
答案 1 :(得分:9)
最初被禁止它的原因是因为**kwargs
是参数列表中最后一个允许的项目 - 之后什么都不会出现;但是,,
看起来可能会有更多关注它。
这已经改变,现在我们可以调用多个关键字dicts:
some_func(a, b, **c, **d,)
为了保持一致性,现在在函数的定义和调用中都支持尾随逗号。当一个参数有多个参数或一些长参数时,这非常有用,因此逻辑行分成几个物理行。
两个位置的尾随逗号都是可选的。