即使在代码上方执行了返回/中断操作,也要确保始终执行一行代码的最Python化方法是什么?

时间:2018-11-26 22:52:29

标签: python

例如,在以下代码中,将不执行行print("Finished computation")

def test():
    print("Starting computation...")
    if True:
        return 0
    print("Finished computation")  

保证代码执行的一种方法是使用try / finally

def test():
    try:
        print("Starting computation...")
        if True:
            return 0
    finally:
        print("Finished computation")

感觉有点奇怪,因为使用了try而不使用catch。这被认为是最保证执行力的Python方法吗?

3 个答案:

答案 0 :(得分:0)

这是使用finally的替代解决方案-一种关闭函数,它在程序关闭时依靠atexit模块(退出处理程序)执行。关闭功能仅在代码正常终止时执行-如果发送终止信号则不执行。也许其他人可以评论这是否真的是pythonic解决方案。

def shutdown():
  print("Finished computation")

def test():
  print("Starting computation...")
  if True:
    return 0

import atexit
atexit.register(shutdown)
test()

答案 1 :(得分:-1)

仅添加except这样的事情对我来说很好。

def test():
    try:
        print("Starting computation...")
        0/0
        if True:
            return 0
    except:
        print("error")
    finally:
        print("Finished computation")

答案 2 :(得分:-2)

您可以为变量设置返回值,然后在函数结尾无限期地返回变量。

def test():
    #return variable
    ret = None
    print("Starting computation...")
    if True:
        #set return variable
        ret = 0
    print("Finished computation") 

    return ret