不。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
现在
tryconvert(0, int)返回一个将值转换为整数的函数,
0如果无法完成,则返回。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)