在函数定义中使用 *args 和关键字会导致错误
Using *args and keywords in function definition causes error
我有一个函数定义如下:
def test(self, *args, wires=None, do_queue=True):
pass
在 Python3 中运行正常,但在 Python2 中它崩溃并出现 SyntaxError。我如何修改它以在 Python2 中工作?
在 Python 2 中实现此功能的唯一方法是接受您的 keyword-only 参数作为 **kwargs
并手动提取它们。 Python 2 无法以任何其他方式进行 keyword-only 论证;这是 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()))
我有一个函数定义如下:
def test(self, *args, wires=None, do_queue=True):
pass
在 Python3 中运行正常,但在 Python2 中它崩溃并出现 SyntaxError。我如何修改它以在 Python2 中工作?
在 Python 2 中实现此功能的唯一方法是接受您的 keyword-only 参数作为 **kwargs
并手动提取它们。 Python 2 无法以任何其他方式进行 keyword-only 论证;这是 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()))