Это возможно (при использовании exec
), но не рекомендуется - есть много недостатков , включая потерю читабельности:
from operator import add, eq
exec('def sum_equal_to_target(target):\n def f(pair):\n return eq(target, add(*pair))\n return f')
print(list(map(sum_equal_to_target(7), [(1,2),(3,4),(5,6)])))
# [False, True, False]
Обратите внимание, что lambda
функции - это способ создания (простых) однострочных анонимных функций в Python.AFAICS, для этого без лямбда требуется взломать как exec
.