Python 带传递**kwargs和尾随逗号的语法错误

Python 带传递**kwargs和尾随逗号的语法错误,python,python-3.x,syntax-error,python-3.4,Python,Python 3.x,Syntax Error,Python 3.4,我想知道为什么这是Python 3.4中的语法错误: some_function( filename = "foobar.c", **kwargs, ) 正如vaultah(出于某种原因,他没有发布答案)所指出的,删除**kwargs后的尾随逗号时,它会起作用,这一点过去和现在都有所改变。从Python3.6开始,语法将很好地工作 明确地说,是的,我想允许在*args或**kwds之后使用逗号结尾。这就是补丁的作用- 它最初被禁止的原因是,**kwargs是参数列表中最后一个允许的项—

我想知道为什么这是Python 3.4中的语法错误:

some_function(
  filename = "foobar.c",
  **kwargs,
)
正如vaultah(出于某种原因,他没有发布答案)所指出的,删除
**kwargs

后的尾随逗号时,它会起作用,这一点过去和现在都有所改变。从Python3.6开始,语法将很好地工作

明确地说,是的,我想允许在
*args
**kwds
之后使用逗号结尾。这就是补丁的作用-


它最初被禁止的原因是,
**kwargs
是参数列表中最后一个允许的项——后面不能有任何内容;然而,一个
看起来后面可能还有更多

这已经改变了,因此我们现在可以使用多个关键字dict调用:

some_func(a, b, **c, **d,)
为了保持一致性,现在在函数的定义和调用中都支持尾随逗号。当一个人有几个参数或几个长参数,因此逻辑行被分割成几个物理行时,这非常有用


尾随逗号在两个位置都是可选的。

谢谢。我对
**c,**d
部分很好奇。Python如何知道在
c
中放置哪些关键字参数,在
d
中放置哪些关键字参数?@NiklasR:对不起,这部分错了,更新了答案。