我下面的代码可在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修复此问题?
答案 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)))