python - 为什么Python没有 "continue if"语句?

标签 python python-3.x

我认为这是一段非常可读的代码,

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)。它被添加到语言中是为了提供一种不易出错的方法来实现许多用户已经尝试使用 andor 来实现的目标-电路黑客(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/

相关文章:

javascript - flask + AngularJS : ng-include is 404'ing

python - 如何在没有 "while True"循环的情况下绘制这个对数?

python - 无法在 Windows 中为 Python 3.x 安装 Pillow - 需要 Zlib

python - 有没有办法 "work around"装饰器的保留状态?

python - 在 matplotlib 中向图中追加一条线,轴故障

python - 如何在 Tkinter 上排列按钮

javascript - ES6命名导入引入了const?

python - 无法为一副牌赋予数值

python - 将数据框列中的相似行合并为一个

python - Python 中的正则表达式?