Как в лямбда-функции использовать больше одной команды?

Как в лямбда-функции использовать больше одной команды?

Предположим у меня есть функция 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)
→ Ссылка