python2.7中使用lamb的“无效语法错误”

时间:2018-09-18 05:14:19

标签: python-2.7

我下面的代码可在python3上运行,但在python2上给出无效的语法错误。

button = QPushButton('Click')
button.clicked.connect(lambda *args, row=row, column=column: self.myfunction(row, column))

看到错误:

button.clicked.connect(lambda *args, row=row, column=column: self.myfunction(row, column))
                                           ^
SyntaxError: invalid syntax

如何为python2.7修复此问题?

1 个答案:

答案 0 :(得分:0)

在Python 2.7中,变量参数必须在常规参数之后列出,因此不允许使用签名为*args, row=row, column=column之类的函数。

要将此Python 3函数移植回Python 2.7,必须使用可变关键字参数:

button.clicked.connect(lambda *args, **kwargs: self.myfunction(kwargs.get('row', row), kwargs.get('column', column)))