Как в лямбда-функции использовать больше одной команды?
Как в лямбда-функции использовать больше одной команды?
Предположим у меня есть функция f, которая принимает аргументы. Я допустим присваиваю эту функцию как команду в кнопку tkinter:
b = Button(root, command = lambda: f('arg', 'arg2'))
А если я хочу параллельно добавить еще одну функцию как команду (не добавляя ее в функцию f?
Ответы (3 шт):
Автор решения: Yaroslav
→ Ссылка
Но если я Вас правильно понял, то так:
import math
def sum(x, y): return x + y
def mul(x, y): return x * y
x = lambda a, b: [sum(a, b), mul(a, b)]
result = x(1, 2)
print(result)
Автор решения: bipll
→ Ссылка
Немного дополнительных определений и бойлерплейта на каждую конструкцию:
def for_each(*seq):
ret_val = None
for thunk in seq:
ret_val = thunk() if callable(thunk) else thunk
return ret_val
lmb = lambda x, y: for_each(
lambda: print("Hi,", x), lambda: print("Lo 0_o,", y), x + y)
print(lmb(20, 22))
Можно дополнительно определить класс Thunk, чтобы не исполнять вообще все исполнимые аргументы, но в питоне, кажется, это будет еще дополнительный бойлерплейт.
Автор решения: vadim vaduxa
→ Ссылка
class A:
def method(self):
def cmd():
f1('arg', 'arg2')
f2('arg', 'arg2')
b = Button(root, command=cmd)