"无效语法错误"与 Python2.7 中的 lamba 用法



我下面的代码适用于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 解决这个问题?

在 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)))

最新更新