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 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错