For 循环中的 Lambda 捕获最后一个值
在您的代码中:
for i in range(len(options)): option = options[i] __cMenu.add_command( label="{} ".format(option), command=lambda: self.filter_records(column, option) )
每个 lambda 捕获变量选项,在创建 lambda 函数时对其求值。这意味着所有 lambda 捕获相同的 option 值,这是它在循环中采用的最后一个值。
为了避免这种情况,您需要确保每个 lambda 捕获不同的 option 值。这可以通过使用带有可选参数的 lambda 语法来完成,如下所示:
for i in range(len(options)): option = options[i] __cMenu.add_command( label="{} ".format(option), command=lambda opt=option: self.filter_records(column, opt) )
在这种情况下,lambda 函数捕获 option 的值作为参数 opt,确保每个 lambda 捕获不同的值期权的价值。
以上是为什么循环中的 Lambda 会捕获最后一个值,如何避免这种情况?的详细内容。更多信息请关注PHP中文网其他相关文章!