不。 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
return convert
现在tryconvert(0,int)返回一个函数convert(),它获取一个值并将其转换为一个整数,如果不能完成,则返回0。