gpt4 book ai didi

python - 局部变量的第一个 lambda 捕获始终为 False

转载 作者:行者123 更新时间:2023-12-01 04:53:29 27 4
gpt4 key购买 nike

将 lambda 函数连接到 Qt 小部件,lambda 需要捕获两个局部变量并将它们传递给外部函数。我遇到了一个困扰我的问题,因为它绝对是位置性的:

pushbutton.clicked.connect(lambda ca=current_answer, a=correct_answer:
self.ap.parse_answer(ca, a))

传递(False, "desired Correct_answer string"),同时切换局部变量捕获的顺序:

pushbutton.clicked.connect(lambda a=correct_answer,ca=current_answer:
self.ap.parse_answer(ca, a))

传递 ("所需的 current_answer 字符串", False)

无论我首先捕获的哪个变量始终设置为 False,而第二个变量捕获始终是预期的。

这表明我的代码中没有其他内容将 False 分配给 current_answer Correct_answer,并且在调用 lambda 之前立即插入了 print() 语句函数确认两个变量都设置为所需的字符串。也许我只是没有正确捕获变量,但经过一些阅读后,我找不到语法的任何问题。我的变量捕获看起来与我发现的许多示例相同。

最佳答案

您总是看到 False 作为传递给回调 lambda 的第一个参数,因为 Qt 定义了信号 QAbstractButton::clicked采用默认值为 False 的单个参数。由于您的 lambda 正在处理该信号,因此会使用 False 调用它。

为了其他人的利益:因为 lambda 仅使用单个参数调用,所以第二个和第三个参数获得默认值,OP 现在将其定义为范围内变量的值 answercurrent_answer

关于python - 局部变量的第一个 lambda 捕获始终为 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953895/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com