2016-05-22 3 views
-1

Как я могу получить значение click_type в выражении ниже, так как я хотел бы сравнить его на более позднем этапе сценария?Получить значение из lambda

cc.on_button_single_or_double_click_or_hold = lambda channel, click_type, was_queued, time_diff: \ 
     print(click_type) 
+0

Можете ли вы, пожалуйста, указать контекст? когда вы предоставите вход лямбда-функции? Вы сами пишете эту строку или копируете ее откуда-то? – Yaron

+0

Я использую библиотеку и могу получить значение click_type только по приведенному выше коду. я хотел бы иметь возможность сравнить это с 3 различными строками. как я могу это сделать – Ossama

+0

Я получил эту работу cc.on_button_single_or_double_click_or_hold = lambda channel, click_type, was_queued, time_diff: print ("1 клик"), если str (click_type) == 'ClickType.ButtonSingleClick' else print ("двойной щелчок") if str (click_type) == 'ClickType.ButtonDoubleClick' else print ("button held") , но я ограничен – Ossama

ответ

0

В любом месте, где вы можете использовать лямбда, вы также можете определить функцию. Так как насчет этого?

def record_click(click_type=None): 
    """ 
    Save each click seen in a list 
    """ 
    try: 
     cache = record_click.cache 
    except AttributeError: 
     record_click.cache = [] 
    if click_type is not None: 
     cache.append(click_type) 
    return cache 

def handle_click(channel, click_type, was_queued, time_diff): 
    """ 
    Report each click, then record it for later 
    """ 
    print(click_type) 
    record_click(click_type) 

cc.on_button_single_or_double_click_or_hold = handle_click 

В другом месте в коде:.

def foobar(...): 
    """ 
    Look at the most recent click 
    """ 
    click_list = record_click() 
    if click_list[-1] == ???: 
     do something 

Функция record_click хранит список кликов, как они приходят в Когда вы называете это без каких-либо аргументов, он возвращает список к вам. click_list [-1] получает самый последний щелчок, последний из списка.

Смежные вопросы