func(* args,** kwargs,x)抛出无效语法

时间:2013-08-26 21:26:35

标签: python

再次研究自己的角落......

def superfunction(*args, **kwargs, k):
                                 ^
SyntaxError: invalid syntax

我的规则是什么?似乎你不应该将'常规'变量与*变量混合,但我找不到任何人确认或否认这一点。我在某处阅读(我现在无法找到)当前必须先找到某些类型的参数,我相信关键字参数,这可能是也可能不是我的问题的一部分。

2 个答案:

答案 0 :(得分:16)

试试这个:

def superfunction(k, *args, **kwargs):

**kwargs变量关键字参数必须是函数声明中的最后一部分。倒数第二个*args变量位置参数。 (仅在Python 3.x中,您还可以在*args**kwargs之间使用仅限关键字的参数。)在第一个位置,位置参数 - 这是声明函数参数的正确方法。有关其他详细信息,请查看此post

有关完整参考,请参阅Python 3.xPython 2.x中的函数定义部分。

答案 1 :(得分:4)

语法应该是这样的:

def superfunction(k, *args, **kwargs):

首先,您提供所有位置参数,然后是非关键字参数,然后是关键字参数。