【问题标题】:python keyword continue is shifting control to finally keywordpython 关键字 continue 正在将控制权转移到 finally 关键字
【发布时间】:2016-11-09 16:01:37
【问题描述】:

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

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

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()

【问题讨论】:

  • 是流量控制。您在while 中有一个try/except,而不仅仅是一个裸露的while
  • finally总是在同一try 子句的每个exceptelse之后 执行。

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


【解决方案1】:

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

continue 不会跳过它(否则它会是 python 中的一个错误)。

【讨论】:

    【解决方案2】:

    这在documentation for the continue statement:

    中有说明

    当 continue 将控制权从带有 finally 子句的 try 语句中转移出去时,该 finally 子句在真正开始下一个循环周期之前执行

    (强调我的)

    是的,如果没有 while 循环,你会弹出一个 SyntaxError;因为continuewhile 内,finally 总是有机会完成事情;它在退出时被执行。

    【讨论】:

    • 所以实际上代码没有使用正确的样式吗?
    • 样式不错,只是这里不需要finallyfinally 如果你想做一些清理动作,应该使用;如果您不需要这样做,请不要使用它@sky_1
    【解决方案3】:

    finally 子句必须执行无论发生什么,都是这样。

    这就是它被称为finally 的原因:无论您尝试过 的方法是成功还是提出了except 离子,它都是始终 执行。

    【讨论】:

      【解决方案4】:

      finally 总是在 try/exept 中执行,不管是什么异常。我认为这个材料会对你有所帮助https://docs.python.org/2.5/whatsnew/pep-341.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-24
        • 2014-03-23
        • 1970-01-01
        • 2019-12-07
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        相关资源
        最近更新 更多