Überall, wo Sie ein Lambda verwenden können, können Sie auch eine Funktion definieren. Wie wäre es damit?
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
An anderer Stelle im Code.
def foobar(...):
"""
Look at the most recent click
"""
click_list = record_click()
if click_list[-1] == ???:
do something
Die Funktion record_click speichert eine Liste der Klicks, wie sie kommen in Wenn Sie es ohne Argumente aufrufen, wird die Liste an Sie zurück. click_list [-1] erhält den letzten Klick, den letzten in der Liste.
Können Sie bitte den Kontext angeben? Wann geben Sie die Eingabe für die Lambda-Funktion? haben Sie schreiben die obige Zeile selbst/kopieren Sie es von irgendwo? – Yaron
Ich benutze eine Bibliothek und bin in der Lage, den Wert von click_type nur durch den obigen Code zu erhalten. Ich möchte das mit 3 verschiedenen Strings vergleichen können. wie kann ich das tun – Ossama
Ich habe diese Arbeit cc.on_button_single_or_double_click_or_hold = Lambda-Kanal, click_type, was_queued, time_diff: print ("1-Klick"), wenn str (click_type) == 'ClickType.ButtonSingleClick' else print ("Doppelklick") wenn str (click_type) == 'ClickType.ButtonDoubleClick' else print ("Taste gehalten") aber ich bin begrenzt – Ossama