在函数定义中使用* args和关键字会导致错误

时间:2019-07-13 17:54:08

标签: python python-2.x

我的函数定义如下:

def test(self, *args, wires=None, do_queue=True):
    pass

在Python3中,它可以正常运行,但是在Python2中,它会因SyntaxError崩溃。如何修改它以在Python2中工作?

1 个答案:

答案 0 :(得分:3)

在Python 2中实现此目的的唯一方法是接受仅关键字的参数作为**kwargs并手动提取它们。 Python 2无法以任何其他方式执行仅关键字参数;是a new feature of Python 3 to allow this at all

与Python 2最接近的等效项是:

def test(self, *args, **kwargs):
    wires = kwargs.pop('wires', None)
    do_queue = kwargs.pop('do_queue', True)
    if kwargs:
        raise TypeError("test got unexpected keyword arguments: {}".format(kwargs.keys()))