2016-07-06 11 views
1

ich mit dem Begriff der Lambda-Ausdrücke ein bisschen am kämpfen und ich habe dieses Stück Code hier:Bitte erklären Sie mir diesen Ausdruck Lambda Nutzung mit 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'), 
     } 
    ] 
} 

)

Kann mir bitte jemand erklären die Verwendung des Lambda-Ausdrucks hier? Mehr von diesem Code ist hier:

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

Dank!

+0

Was meinst du mit "erklären"? Meinst du die Syntax? Was machen die Lambdas eigentlich? Warum ist es sinnvoll, sie an dieser Stelle zu haben? – MisterMiyagi

+0

@bakkal erklärte es gut unter –

+0

Dann bitte klären Sie das in Ihrer Frage, damit andere es lesen, ohne den gesamten Thread zu betrachten. – MisterMiyagi

Antwort

1

Lambdas sind anonyme Funktionen, mental Sie diesen Block ersetzen kann

[ 
    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'), 
    } 
] 

mit

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, 
    } 
] 

Der Unter _ in lambda _: ist ein convention in Python für Variablen Sie nicht verwenden, gehen, ein " wegwerfbar ", wie Sie sehen können, dass Lambda/Funktion das Argument _ nicht verwendet.

+0

Das ist plötzlich so viel klarer .. Vielen Dank! –

Verwandte Themen