酷酷的枪手 发表于 2023-4-13 19:21:13

Python 异常的小问题

try 中的 return True 有语法错误吗? 为啥结果只返回了False 没有返回True啊

isdkz 发表于 2023-4-13 19:22:01

本帖最后由 isdkz 于 2023-4-13 19:25 编辑

你好!try中的return True语法本身是没有问题的。然而,在你的例子中,finally语句块也包含了一个return语句。这就导致了bool_return()函数总是返回False。

当try和finally语句都有return语句时,Python的执行逻辑是这样的:


[*]首先,执行try语句块中的代码。在你的例子中,这意味着执行return True。这时,Python会计算并准备返回True。
[*]然后,无论try语句块中是否发生异常,Python都会执行finally语句块中的代码。在你的例子中,这意味着执行return False。
[*]在执行完finally语句块后,Python将返回finally语句块中的值(即False),而不是try语句块中的值(即True)。因此,bool_return()函数总是返回False。


为了让你的函数在不同情况下返回True或False,你可以尝试以下方式:

def bool_return():
    try:
      # 这里放可能会抛出异常的代码
      return True
    except:
      # 这里处理异常,例如打印错误信息
      return False


这样,如果try语句块中的代码成功执行,函数将返回True。如果发生异常,函数将执行except语句块并返回False。

sfqxx 发表于 2023-4-13 19:25:18

finally是一定会执行的语句

歌者文明清理员 发表于 2023-4-13 19:28:43

同问:
def func():
   try:
         print("heres try")
         return "try"
         print("try done")
   finally:
         print("finally")
         return "finally"
         print("finally done")

print("res:", func())
heres try
finally
res: finally

酷酷的枪手 发表于 2023-4-13 19:46:11

歌者文明清理员 发表于 2023-4-13 19:28
同问:

你这个和我的问题是一样的,isdkz解释了。就是说try里面的内容没有错,但是finally:的内容必须要执行,如果return 在 try里面被执行了,这个函数的调用就结束,不会执行finally里面的内容
页: [1]
查看完整版本: Python 异常的小问题