Ответ 1
Неа. Лямбда Python может быть только одним выражением. Используйте именованную функцию.
Удобно написать общую функцию для преобразования типов:
def tryconvert(value, default, *types):
for t in types:
try:
return t(value)
except ValueError, TypeError:
continue
return default
Затем вы можете написать свой лямбда:
lambda v: tryconvert(v, 0, int)
Вы также можете написать tryconvert()
, чтобы он возвращал функцию, которая принимает значение, которое нужно преобразовать; то вам не нужна лямбда:
def tryconvert(default, *types):
def convert(value):
for t in types:
try:
return t(value)
except ValueError, TypeError:
continue
return default
return convert
Теперь tryconvert(0, int)
возвращает функцию convert(value)
, которая принимает значение и преобразует его в целое число, и возвращает 0
, если это невозможно.