是的,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