glare II 2023-03-18 22:35 采纳率: 92.5%
浏览 17
已结题

关于#python#的问题:对上面折行有关try语句的代码的输出不是很理解


def func():
    try:
        return 123
    finally:
        return 321
print(func())#结果:321
 
def func():
    try:
        return 123
    finally:
        print(321)
print(func())#结果321 123

对上面折行有关try语句的代码的输出不是很理解?

  • 写回答

3条回答 默认 最新

  • 追cium 2023-03-18 22:41
    关注

    参考GPT和自己的思路:

    这段代码包含两个函数,它们都使用了 try...finally 语句。try 子句用于包含可能发生异常的代码,而 finally 子句用于包含无论是否发生异常都必须执行的代码。

    在第一个函数的 try 块中,因为没有发生异常,因此 return 语句被执行并返回了 123。但是在执行完 return 语句后,立即执行了 finally 子句中的 return 语句,从而导致函数返回了 321。因此,print(func()) 的输出结果是 321。

    在第二个函数的 try 块中,同样执行了 return 123。但是,在执行完 return 语句后,又立即执行了 finally 子句中的 print 语句打印出 321。然后函数继续执行,返回了 123,从而导致 print(func()) 的输出结果是 321 123。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程