传递** kwargs和尾随逗号的SyntaxError

时间:2015-10-26 16:10:32

标签: python python-3.x syntax-error python-3.4

我想知道为什么这是Python 3.4中的SyntaxError:

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

**kwargs之后删除尾随逗号时可以正常工作。

2 个答案:

答案 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,)

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

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