用于Python2.x和3.x的带有参数和默认kwargs的函数
我有一个Python类,其方法如下:用于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
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,也许,有什么可能性?