2016-07-06 71 views
1

我挣扎了一下与Lambda表达式的概念,这Lambda表达式的使用,我有这段代码在这里:请解释我与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'), 
     } 
    ] 
} 

有人可以请解释一下我的在这里使用Lambda表达式? 更多这段代码是在这里:

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

谢谢!

+0

“解释”是什么意思?你的意思是语法吗? lambdas实际上做了什么?为什么在这一点上有用他们? – MisterMiyagi

+0

@bakkal解释清楚以下 –

+0

然后请澄清一下,在你的问题中,让其他读者知道它而不看整个线程。 – MisterMiyagi

回答

1

Lambda表达式是匿名函数,精神上可以在lambda _:

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 ctx: list_tbl.select_row_by_cells(
     {'Name': ctx['pod'].name, 'Provider': ctx['provider'].name}), 
    { 
     'containers_pod_edit_tags': 
     lambda _: pol_btn('Edit Tags'), 
    } 
] 

是你不打算使用,变量convention in Python一个“一次性“,你可以看到lambda /函数没有使用参数_

+0

这突然间变得更清晰了..非常感谢! –