我实际上是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()
答案 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