Пожалуйста, объясните мне это использование лямбда-выражения с Python
Я немного борюсь с концепцией лямбда-выражений, и у меня есть этот кусок кода здесь:
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'),
}
]
}
)
Может кто-нибудь объяснить, пожалуйста, здесь использование лямбда-выражения? Больше этого кода здесь:
Спасибо!
1 ответ
Решение
Лямбды - это анонимные функции, мысленно вы можете заменить этот блок
[
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 _:
это соглашение в Python для переменных, которые вы не собираетесь использовать, "отбрасывание", как вы можете видеть, что лямбда / функция не использует аргумент _
,