在Python中,if pass和if continue是什么意思?

38

我看到有人发布了下面的答案,以区分 if x: passif x: continue

>>> a = [0, 1, 2]
>>> for element in a:
...     if not element:
...         pass
...     print(element)
... 
0
1
2
>>> for element in a:
...     if not element:
...         continue
...     print(element)
... 
1
2

if not elementa=0的情况下的结果是什么?使用continue时,为什么不会打印0?

7个回答

36

使用continue语句跳至下一次for循环
使用pass语句什么都不做
因此,使用continue语句时,print语句将不会被执行(因为代码继续到下一次迭代)
而使用pass语句会平静地结束该if语句(实际上什么也不做),然后执行print语句。


如果我理解正确的话,continue 的意思是“请继续循环下一个值”?只有当 if 语句为 False 时才会执行“continue”? - Binx

14

由于条件语句 "if not element:" 的原因,'0'没有被打印。

若元素为None、False、空字符串('')或0,则循环将继续下一次迭代。


2
它不仅限于 None0。如果元素为 Falsey,它将继续执行。 - zondo
“if not 1” 是否意味着 False?那么为什么会打印出 1 并继续执行?此外,如果有人写了 “if None”,它也会继续执行而不打印吗?谢谢。 - Shelly
  1. 是的。如果不是1,则表示为False。在这种情况下,条件将失败并继续执行“print”语句。这就是你的代码打印1的原因。“如果不是<某个值>”只有在<某个值>的值为任何falsey值,如None、False、空字符串('')或0时才会为True。
  2. 如果是None,则始终为False。
- Anoop

8
if not element:

在这两个示例中,这只会匹配0
pass

这段代码什么也不做。因此,下一条指令print element将被执行。

continue

这告诉Python停止当前的循环并跳转到下一个循环周期。因此,print element永远不会被执行。相反,for循环将获取下一个值1并从头开始。

6
在Python中,passcontinue有根本性的区别。pass仅仅不执行任何操作,而continue则跳到for循环的下一次迭代。语句if not 0总是被评估为True,所以passcontinue语句都将被执行。pass将不执行任何操作并打印该值,而continue将跳过到下一次迭代,忽略下面写的print语句。

5

来源:https://docs.python.org/2/tutorial/controlflow.html#pass-statements

pass语句不执行任何操作。当程序在语法上需要一个语句但实际上不需要执行任何操作时,可以使用该语句。

在您上面的代码片段中,当element = 0时,if not element将评估为true。在Python中,0与布尔值false相同。在第一个循环中,pass什么也没做,因此打印了所有三个元素。在第二个循环中,continue将停止该迭代的其余部分的执行。因此,打印语句永远不会执行,所以只打印了1和2。


1

continue是一种控制流语句,用于跳出迭代的最内层循环体。当您的代码遇到

if not element

解释器会跳过所有未验证为true的元素值。 0是这样一个值,当它没有遇到continue语句时,它会跳过循环的下一次迭代,然后继续打印element的值1 2
相比之下,pass语句什么也不做,只是跳过并返回到要执行的下一行代码。

0
1 a = [0, 1, 2]
2 for element in a:
3     if not element:
4         continue
5.    print(element)

在第一个循环中,element的值为0,而0代表False,如果非False就代表True。这就是为什么满足条件,我们进入if语句块并执行了continue。当continue被执行时,我们前往下一个循环。换句话说,第一个循环已经终止了,这就是为什么print(element)没有被执行,因此不会打印出0的值。

在使用pass的情况下,它什么也不做。当解释器读到pass语句时,它将移动到下一行,也就是print(element)的语句,它就会打印出0的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接