关于#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语句的代码的输出不是很理解?

参考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。

这个代码其实就是告诉你一件事
虽然 return 通常来说是函数返回结果,不执行后面的代码,但是遇到 finally,它还会继续执行 finally

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^