【问题标题】:Please explain me this Lambda expression usage with Python [closed]请用 Python 解释一下这个 Lambda 表达式的用法[关闭]
【发布时间】:2025-11-22 10:50:02
【问题描述】:

我在 Lambda 表达式的概念上有点挣扎,我在这里有这段代码:

nav.add_branch(
'containers_pods',
{
    'containers_pod':
    [
        lambda ctx: list_tbl.select_row_by_cells(
            {'Name': ctx['pod'].name, 'Provider': ctx['provider'].name}),
        {
            'containers_pod_edit_tags':
            lambda _: pol_btn('Edit Tags'),
        }
    ],
    'containers_pod_detail':
    [
        lambda ctx: list_tbl.click_row_by_cells(
            {'Name': ctx['pod'].name, 'Provider': ctx['provider'].name}),
        {
            'containers_pod_timelines_detail':
            lambda _: mon_btn('Timelines'),
            'containers_pod_edit_tags_detail':
            lambda _: pol_btn('Edit Tags'),
        }
    ]
}

)

有人可以在这里解释一下 Lambda 表达式的用法吗? 更多代码在这里:

https://github.com/ManageIQ/integration_tests/blob/093f4cf42127e2f98cc01d91fc2d4db487543ca1/cfme/containers/pod.py#L11-L35

谢谢!

【问题讨论】:

  • “解释”是什么意思?你是说语法吗? lambda 实际上做了什么?为什么此时拥有它们很有用?
  • @bakkal 在下面解释得很好
  • 那么请在您的问题中澄清这一点,以便其他阅读它的人无需查看整个线程就知道它。

标签: python lambda manageiq


【解决方案1】:

Lambdas 是匿名函数,你可以在心理上替换这个块

[
    lambda ctx: list_tbl.select_row_by_cells(
        {'Name': ctx['pod'].name, 'Provider': ctx['provider'].name}),
    {
        'containers_pod_edit_tags':
        lambda _: pol_btn('Edit Tags'),
    }
]

def function_1(ctx):
    return list_tbl.select_row_by_cells(
        {'Name': ctx['pod'].name, 'Provider': ctx['provider'].name}
    )

def function_2(_):
    return pol_btn('Edit Tags')


[
    function_1,
    {
        'containers_pod_edit_tags':
        function_2,
    }
]

lambda _: 中的下划线 _convention in Python,表示您不会使用的变量,是“一次性”,因为您可以看到 lambda/function 没有使用参数 _

【讨论】:

  • 这突然变得清晰多了.. 非常感谢!
最近更新 更多