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

SyntaxError with passing **kwargs and trailing comma

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

some_function(
  filename = "foobar.c",
  **kwargs,
)

删除 **kwargs 后的尾随逗号时有效。

正如 vaultah 所指出的(出于某种原因他懒得 post 回答),这是 reported on the issue tracker 并且此后已更改。语法将从 Python 3.6.

开始正常工作

To be explicit, yes, I want to allow trailing comma even after *args or **kwds. And that's what the patch does. —Guido van Rossum

它最初被禁止的原因是因为 **kwargs 是参数列表中最后允许的项目——它之后没有任何内容;但是,, 看起来后面可能还有更多。

这已经改变了,我们现在可以用多个关键字指令调用:

some_func(a, b, **c, **d,)

为了保持一致性,现在函数的定义和调用都支持尾随逗号。当一个人有多个参数或几个长参数时,这非常有用,因此逻辑行被分成几条物理行。

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