卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16857本站已运行3321

为什么Python中没有goto语句?

为什么Python中没有goto语句?

是的,Python 中没有 goto 语句。我们先来了解一下什么是C语言中的goto。然而,在 C 中也不鼓励使用 goto。

C 编程中的 goto 语句提供从“goto”到同一函数中标记语句的无条件跳转。以下是语法 -

goto label;
..
.
label: statement;

示例

现在让我们看看 goto 的 C 程序 -

#</span>include</span> <stdio.h></span></span>
int</span> main</span> (</span>)</span> {</span>
   int</span> a =</span> 10</span>;</span>
   LOOP:</span>do</span> {</span>
      if</span>(</span> a ==</span> 15</span>)</span> {</span>
         /* skip the iteration */</span>
         a =</span> a +</span> 1</span>;</span>
         goto</span> LOOP;</span>
      }</span>
      printf</span>(</span>"a = %d\n"</span>,</span> a)</span>;</span>
      a++</span>;</span>
   }</span>while</span>(</span> a <</span> 20</span> )</span>;</span>
   return</span> 0</span>;</span>
}</span>

输出

a = 10
a = 11
a = 12
a = 13
a = 14
a = 16
a = 17
a = 18
a = 19

注意 - 在 C 语言中也不鼓励使用 goto 语句。

Python 中没有 GoTo

在 Python 中,不需要 goto,因为我们可以使用 if 语句和 or、and、if-else 表达式以及使用 while 和 for 语句进行循环(包含 continue 和 break)来完成相同的任务。

用户定义的异常

使用用户定义的异常作为替代方案 -

class</span> goto1</span>(</span>Exception)</span>:</span>
   pass</span>
class</span> goto2</span>(</span>Exception)</span>:</span>
   pass</span>
class</span> goto3</span>(</span>Exception)</span>:</span>
   pass</span>

def</span> loop</span>(</span>)</span>:</span>
   print</span>(</span>\'start\'</span>)</span>
   num =</span> input</span>(</span>)</span>
   try</span>:</span>
      if</span> num<=</span>0</span>:</span>
         raise</span> goto1
      elif</span> num<=</span>2</span>:</span>
         raise</span> goto2
      elif</span> num<=</span>4</span>:</span>
         raise</span> goto3
      elif</span> num<=</span>6</span>:</span>
         raise</span> goto1
      else</span>:</span>
         print</span>(</span>\'end\'</span>)</span>
         return</span> 0</span>
   except</span> goto1 as</span> e:</span>
      print</span>(</span>\'goto1\'</span>)</span>
      loop(</span>)</span>
   except</span> goto2 as</span> e:</span>
      print</span>(</span>\'goto2\'</span>)</span>
      loop(</span>)</span>
   except</span> goto3 as</span> e:</span>
      print</span>(</span>\'goto3\'</span>)</span>
      loop(</span>)</span>

嵌套方法

示例

使用嵌套方法作为另一种选择 -

def</span> demo</span>(</span>)</span>:</span>
   print</span>(</span>"In the demo() function"</span>)</span>
def</span> inline</span>(</span>)</span>:</span>
   print</span>(</span>"In"</span>)</span>
inline(</span>)</span>
demo(</span>)</span>

输出

In
In the demo() function

goto 语句模块

它是一个在Python中使用goto的函数装饰器。在 Python 2.6 到 3.6 和 PyPy 上进行了测试。使用 pip 安装它 -

注意:适用于 Python 3.6

pip install goto-statement

让我们看一个示例 

# Python 3.6</span>
from</span> goto import</span> with_goto

@with_goto</span>
def</span> range</span>(</span>start,</span> stop)</span>:</span>
   i =</span> start
   result =</span> [</span>]</span>

   label .</span>begin
   if</span> i ==</span> stop:</span>
      goto .</span>end

   result.</span>append(</span>i)</span>
   i +=</span> 1</span>
   goto .</span>begin

   label .</span>end
   return</span> result

卓越飞翔博客
上一篇: Bash程序以找到A的B次方?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏