2016-07-06 69 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

這突然間變得更清晰了..非常感謝! –