【问题标题】:Python - Returning a break statementPython - 返回一个中断语句
【发布时间】:2021-10-25 13:02:20
【问题描述】:

如果你调用一个函数来检查退出条件,你能让它返回一个break语句吗?比如:

def check():
    return break

def myLoop:
    while myLoop:
        check()

允许这样做吗?我知道所写的语法无效。

【问题讨论】:

    标签: python loops


    【解决方案1】:

    不,不幸的是,它不是那样工作的。您必须检查返回值,然后决定在调用者中跳出循环。

    while myLoop:
       result = check()
       if result == 'oh no':
           break
    

    当然,根据你想要做什么,它可能很简单:

    result = check()
    while result != 'oh no':
         result = check()
    

    【讨论】:

      【解决方案2】:

      break 是关键字但不是对象,因此解释器link 对它的处理方式不同。 Python函数只能返回对象等。

      如果你想在深入函数时跳出循环,一种方法是使用异常:

      class BreakException(Exception):
          pass
      

      在函数的某处引发异常:

      def some_func():
          raise BreakException()
      

      你可以像这样跳出循环:

      try:
          while True:
              some_func()
      except BreakException:
          pass
      

      我觉得这不是一个好的做法,但我看到一些语言使用它,例如 Scala link

      【讨论】:

      • 哦,很高兴知道。它确实看起来有点危险,但我会记住它。谢谢!
      【解决方案3】:

      def 检查():

      #define your conditions here with if..else statement 
      return True
      

      def myLoop():

      while True:
          if check()==True: break
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-09
        • 1970-01-01
        • 2015-08-14
        • 2018-10-09
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 2020-09-12
        相关资源
        最近更新 更多