【发布时间】:2018-04-20 00:46:50
【问题描述】:
goto 通常被认为是邪恶的,不鼓励使用。但有时goto 会提供更清晰、更易读的代码组织,例如:
我想做一些一步一步的计算,每一步的结果决定是否需要以下步骤,如果需要,走哪个分支。逻辑本身有点复杂,所以有几个嵌套的 if 语句。假设 goto 在 python 中可用,实现此目的的一种巧妙方法是:
do_something
if ...:
goto zero
do_something
if case 1:
do_something
if ...:
goto zero
do_something
elif case 2:
do_something
if ...:
goto zero
do_something
....
result = compute_result(....)
goto next
zero:
result = 0
next:
do_something
没有goto 的帮助,可以通过引入布尔变量来存储标志并添加额外的if 测试来打开或关闭代码来获得相同的行为。但是这种方式使控制流的可读性大大降低。一种解决方法是滥用一次性for 循环来模拟上述代码的goto 版本,如下所示:
zero = True
for _ in range(1):
do_something
if ...:
break
do_something
if case 1:
do_something
if ...:
break
do_something
elif case 2:
do_something
if ...:
break
do_something
....
zero = False
if zero:
result = 0
else
result = compute_result(....)
do_something
我的问题是,这是编写更具可读性的代码的最佳方法吗?
【问题讨论】:
-
和
if case 1:无论如何都是无效的语法... -
@Julien 所以
...。这是伪代码。 -
欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topic 和 how to ask 在这里申请。 StackOverflow 不是设计、编码、研究或教程服务。我认为,一旦您完成了 Python 教程,您将学习到正确的控制结构,这样 这些大纲对您来说都不“好”。
-
嗯,只有我明白他在问什么吗?!