我认为这是一段非常可读的代码,
for i in range(100):
continue if i % 2 == 0
但它在语法上不正确。我们可以用 Python 做其他好事,例如,
for i in things:
total += 3 if i % 2 == 0 else 1
或者也许,
return a if b > a else c
为什么我们不能执行 Continue if
语句?
最佳答案
流程:
for i in range(100):
continue if i % 2 == 0
相当于:
for i in range(1, 100, 2):
...
或者,更一般地说,:
for i in range(100):
if i % 2 == 0:
continue
Python 语言设计者有投票反对语法更改的历史,这些更改只提供了做同一件事的稍微不同的方法(“应该有一种明显的方法来做到这一点”)。
您提到的单行结构的类型
x if cond else y
这里是一个异常(exception)。它被添加到语言中是为了提供一种不易出错的方法来实现许多用户已经尝试使用 and
和 or
来实现的目标-电路黑客(source: Guido)。
野外代码使用的是:
cond and x or y
这在逻辑上并不等价,但对于已经熟悉三元 cond 的用户来说,这是一个很容易犯的错误? : x : y
来自 C 的语法。正确的等价物是:
(cond and [x] or [y])[0]
但是,这很丑。因此,添加表达式 x if cond else y 的理由不仅仅是为了方便。
关于python - 为什么Python没有 "continue if"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49311848/