首页 > 后端开发 > Python教程 > 为什么循环中的 Lambda 会捕获最后一个值,如何避免这种情况?

为什么循环中的 Lambda 会捕获最后一个值,如何避免这种情况?

Patricia Arquette
发布: 2024-12-23 17:01:09
原创
141 人浏览过

Why Do Lambdas in Loops Capture the Last Value, and How Can This Be Avoided?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板