I am struggling a bit with the concept of Lambda expressions and I have this piece of code here:
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'),
}
]
}
)
Can somebody please explain me the usage of the Lambda expression here? More of this code is here:
Thanks!
Lambdas are anonymous functions, mentally you can replace this block
[
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'),
}
]
with
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,
}
]
The underscore _
in lambda _:
is a convention in Python for variables you're not going to use, a "throwaway", as you can see that lambda/function is not using the argument _
.