当前位置: 首页 > 面试题库 >

Lambda内的Python Try Catch Block

鞠安民
2023-03-14
问题内容

是否可以在lambda函数内部使用try catch块。我需要lambda函数将某个变量转换为整数,但并非所有值都可以转换为整数。


问题答案:

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



 类似资料:
  • 假设我有一个和一个。我想将每个变压器应用于列表中的每个字符串。 使用Java8 lambdas,我可以这样做: 但我想做更像这样的事情,但这会导致编译时错误: 我刚刚开始玩lambdas,所以也许我只是没有正确的语法。

  • 问题内容: 在此问题中用户@Holger提供了一个答案,该答案显示了匿名类的不常见用法,我并不知道。 该答案使用流,但是此问题与流无关,因为这种匿名类型构造可以在其他上下文中使用,即: 令我惊讶的是,它编译并打印了预期的输出。 注意:我很清楚,自古以来,就可以构造一个匿名内部类并按如下方式使用其成员: 但是,这不是我要问的。我的情况有所不同,因为匿名类型是通过方法链传播的。 现在,我可以想象到此功

  • 问题内容: 例如,在以下两个代码中: 和 在这段代码中是什么意思? 问题答案: it变量是lambda中的隐式参数。 其中其他有用的惯例是,如果一个函数字面只有 一个参数 ,它的定义可以省略(与一起- >),它的名字将是 它 :

  • 在此之后,我将Lambda、RDS实例和DocumentDb集群附加到VPC。但是,从那时起,我就无法使用NodeJS AWS-SDK从我的lambda中与我的SQS队列进行对话。 我想补充的是,我已经阅读并实现了以下几点:AWS Lambda:无法从具有VPC访问的Lambda函数访问SQS队列,但是我仍然无法连接。 以下是我所拥有的: null null λ: 我将Lambda附加到VPC,如

  • lambda语句被用来创建新的函数对象,并且在运行时返回它们。 例15.2 使用lambda形式 #!/usr/bin/python # Filename: lambda.py defmake_repeater(n):     return lambdas: s*n twice = make_repeater(2) printtwice('word') printtwice(5) (源文件:cod

  • 在过去的几个小时里,我一直在调试、配置和命名它,我似乎不明白为什么会发生这种情况。 我正在尝试调用一个 lambda 函数,该函数只是从 ec2 中检索基本信息。当我在aws控制台中测试此lambda函数时,它似乎工作正常。但是,使用以下代码在另一个lambda中调用它; 它只是超时了。没有任何反应…两个Lambda都连接到VPC和所有子网 我认为是我的新VPC导致了这个问题。我的VPC包括: 1