python关键字continue将控制权转移到finally关键字

时间:2016-11-09 16:01:37

标签: python python-2.7 python-3.x keyword

我实际上是python的新手。在学习它的同时,我遇到了这段代码。

Python官方文档说当遇到continue语句时, 控制将转移到循环的开头,但在这种情况下,它将转移到最终语句并从那里开始执行。这是python中的一个bug还是什么?有人可以向我解释一下吗?谢谢。

def askint():

 while True:

    try:
        val =int(input("pleas enter an  integer  "))
    except:
        print ("it seems like you did'n enter an integer ")
        continue
    else:
        print ("yep that's an integer thank you")
        break

    finally:
        print ('control is now on finally me')  
    print ('i am also getting executed     ')       



askint()

4 个答案:

答案 0 :(得分:2)

finally代码始终在try/except块中执行。

continue不会跳过它(或者它将是python中的错误)。

答案 1 :(得分:1)

finally子句必须执行,无论发生什么事情,都是如此。

这就是为什么它被称为finally:无论你尝试的内容是否成功或者除了离子都没关系,它是总是执行。

答案 2 :(得分:1)

这在documentation for the continue statement

中说明
  

当continue使用finally子句将控制权移出try语句时,在真正开始下一个循环周期之前执行finally子句

(强调我的)

是的,如果没有while循环,您会弹出SyntaxError个;因为continue位于while内,而finally总是有机会完成事情;它会在出路时执行。

答案 3 :(得分:0)

无论什么是异常,

最终都将在try / exept中执行。我认为这些材料可以帮助你https://docs.python.org/2.5/whatsnew/pep-341.html