不。Python lambda只能是单个表达式。使用命名函数。
编写用于转换类型的通用函数很方便:
def tryconvert(value, default, *types):
for t in types:
try:
return t(value)
except (ValueError, TypeError):
continue
return default
然后,您可以编写lambda:
lambda v: tryconvert(v, 0, int)
您也可以tryconvert()
这样编写,使其 返回 一个将要转换的值的函数。那么您就不需要lambda了:
def tryconvert(default, *types):
def convert(value):
for t in types:
try:
return t(value)
except (ValueError, TypeError):
continue
return default
# set name of conversion function to something more useful
namext = ("_%s_" % default) + "_".join(t.__name__ for t in types)
if hasattr(convert, "__qualname__"): convert.__qualname__ += namext
convert.__name__ += namext
return convert