В любом месте, где вы можете использовать лямбда, вы также можете определить функцию. Так как насчет этого?
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] получает самый последний щелчок, последний из списка.
Можете ли вы, пожалуйста, указать контекст? когда вы предоставите вход лямбда-функции? Вы сами пишете эту строку или копируете ее откуда-то? – Yaron
Я использую библиотеку и могу получить значение click_type только по приведенному выше коду. я хотел бы иметь возможность сравнить это с 3 различными строками. как я могу это сделать – Ossama
Я получил эту работу 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