Я нашел одно использование для лямбд ... в сообщениях отладки.
Поскольку лямбды могут быть лениво оценены, у вас может быть такой код:
log.debug(lambda: "this is my message: %r" % (some_data,))
вместо, возможно, дорого:
log.debug("this is my message: %r" % (some_data,))
, который обрабатывает строку формата, даже если вызов отладки не производит вывод из-за текущего уровня ведения журнала.
Конечно, чтобы он работал так, как описано, используемый модуль ведения журнала должен поддерживать лямбда-выражения как «ленивые параметры» (как это делает мой модуль ведения журнала).
Та же идея может быть применена к любому другому случаю отложенной оценки для создания значения контента по требованию.
Например, этот пользовательский троичный оператор:
def mif(condition, when_true, when_false):
if condition:
return when_true()
else:
return when_false()
mif(a < b, lambda: a + a, lambda: b + b)
вместо:
def mif(condition, when_true, when_false):
if condition:
return when_true
else:
return when_false
mif(a < b, a + a, b + b)
с лямбдами будет оцениваться только выражение, выбранное условием, без лямбда-выражений оба будут оцениваться.
Конечно, вы могли бы просто использовать функции вместо лямбд, но для коротких выражений лямбды (с) меньше.