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

为什么我们在Python中需要“ finally”子句?

吴凯
2023-03-14
问题内容

我不知道为什么我们需要finallytry...except...finally报表。我认为,此代码块

try:
    run_code1()
except TypeError:
    run_code2()
other_code()

使用finally以下命令与此相同:

try:
    run_code1()
except TypeError:
    run_code2()
finally:
    other_code()

我想念什么吗?


问题答案:

如果您提早返回,将会有所不同:

try:
    run_code1()
except TypeError:
    run_code2()
    return None   # The finally block is run before the method returns
finally:
    other_code()

比较一下:

try:
    run_code1()
except TypeError:
    run_code2()
    return None

other_code()  # This doesn't get run if there's an exception.

可能导致差异的其他情况:

  • 如果在except块内引发异常。
  • 如果引发异常,run_code1()但不是TypeError
  • 其他控制流语句,例如continuebreak语句。


 类似资料:
  • 以我的拙见,关于“什么是单子”这个著名问题的答案,尤其是投票最多的答案,试图解释什么是单子,而没有明确解释为什么单子是真正必要的。它们能被解释为一个问题的解决方案吗?

  • 问题内容: 我将稍微解释一下我的脚本,以便您可以理解我的问题。 基本上我做了一个脚本来检查SOCKS5是还是。 当我在上面测试我的脚本时,它运行良好,但是当我在Windows上对其进行测试时,直到我将以下行添加到: 谁能向我解释为什么我在Windows中需要此行,而在Linux服务器上却不需要? 问题答案: SSL证书上的此cURL手册页介绍了连接到SSL / TLS受保护主机时 证书验证 的过程

  • AWS VPC配置有4种场景。但让我们看看这两个: 场景1:1个公共子网。 场景2:1个公共子网和1个私有子网。 由于在公有子网中启动的任何实例都没有 EIP (除非已分配),因此它已无法从 Internet 寻址。然后: 为什么需要私有子网? 私有子网和公共子网到底有什么区别?

  • 问题内容: Angular应用使用属性而不是事件。 为什么是这样? 问题答案: ng-click包含一个角度表达式。Angular表达式是在Angular 范围的上下文中求值的,该范围绑定到具有ng- click属性的元素或该元素的祖先。 Angular表达式语言不包含流控制语句,也不能声明变量或定义函数。这些限制意味着模板只能访问由控制器或指令提供的变量和运行功能。

  • 为什么我们需要字典? 计算机最适合使用数字,而人类最适合使用姓名。我们创建了DNS以便记住主机名而不是IP地址。字典以相同的方式使用,因此我们可以记住AVP名称而不是类型编号。当FreeRADIUS解析请求或生成响应时,会查阅字典。 但是,字典与DNS不同,因为RADIUS客户端不知道FreeRADIUS使用的这些“友好”名称。永远不会在RADIUS客户端和RADIUS服务器之间交换AVP名称。

  • 问题内容: 据我所知,以下两个代码段将达到相同的目的。为什么有块呢? 代码A: 代码B: 问题答案: 如果您未处理的异常被抛出会怎样?(我希望你不会抓到…) 如果从try块内部返回会怎样? 如果catch块引发异常会怎样? 一个代码块确保 无论 您退出该代码块(以几种方式明确地中止整个过程),该代码块都将被执行。这对于确定性清除资源很重要。