您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Lambda内的Python Try Catch Block

Lambda内的Python Try Catch Block

不。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如果无法完成,则返回。

python 2022/1/1 18:43:15 有284人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶