Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Python2.x和3.x的带有参数和默认kwargs的函数_Python - Fatal编程技术网

用于Python2.x和3.x的带有参数和默认kwargs的函数

用于Python2.x和3.x的带有参数和默认kwargs的函数,python,Python,我有一个Python类,其方法如下: class Table(object): def create_index(self, *fields, name=None): ... 它在Python3.4中运行良好,但在Python2.7中抛出了一个SyntaxError,因为args和default kwarg的顺序不同。如果我将其更改为: def create_index(self, name=None, *fields): ... per它在Python2.7

我有一个Python类,其方法如下:

class Table(object):
    def create_index(self, *fields, name=None):
        ...
它在Python3.4中运行良好,但在Python2.7中抛出了一个
SyntaxError
,因为args和default kwarg的顺序不同。如果我将其更改为:

def create_index(self, name=None, *fields):
    ...
per它在Python2.7中工作,在Python3.4中不会抛出错误,但是,
字段
总是以空元组结束,不管我传入什么。我这样称呼它:

表。创建索引(“地址”)


是否有某种方法可以定义一个包含args和default kwargs的函数,该函数与这两个版本兼容?

遗憾的是,在Python 2中,您不能填充
*args
,同时也可以忽略可选的命名参数。您正在使用的特性是在Python3中添加的,正是出于这个目的

这是我能想到的最好的解决办法:

def create_index(self, *fields, **kwargs):
    name = kwargs.pop('name', None)

它迫使您按名称提供
名称
,但您原来的python 3接口似乎已经要求这样做了

@wim,也许,有什么可能性?