我有一个function定义如下:
def test(self, *args, wires=None, do_queue=True):
pass
在Python3中,它正常运行,但在Python2中它与SyntaxError崩溃。如何修改它以在Python2中工作?
分析解答
在Python 2中实现此功能的唯一方法是将keyword-only参数接受为**kwargs
并手动提取它们。 Python 2无法以任何其他方式进行keyword-only参数;这是Python 3的新功能允许这一点。
最接近的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()))