两个Python关键字continue和pass之间有什么显著的区别吗

for element in some_list:
    if not element:
        pass

and

for element in some_list:
    if not element:
        continue

我应该注意的?


当前回答

是的,这是有区别的。Continue强制循环在下一次迭代时开始,而pass意味着“这里没有代码要执行”,并将继续遍历循环体的剩余部分。

运行这些,看看有什么不同:

for element in some_list:
    if not element:
        pass
    print(1) # will print after pass

for element in some_list:
   if not element:
       continue
   print(1) # will not print after continue

其他回答

在您的示例中,没有区别,因为两个语句都出现在循环的末尾。Pass只是一个占位符,因为它什么都不做(它将执行传递给下一个语句)。另一方面,Continue有一个明确的目的:它告诉循环继续,就像它刚刚重新启动一样。

for element in some_list:
    if not element:
        pass
    print element  

for element in some_list:
    if not element:
        continue
    print element

Pass只是表示空什么都不做,如下所示:

for i in range(3):
    if i == 1:
        pass
    print(i)

输出:

0
1
2

Continue跳过当前循环进入下一个循环,如下所示:

for i in range(3):
    if i == 1:
        continue
    print(i)

输出:

0
2

它们之间有区别,continue跳过循环的当前迭代并执行下一个迭代。Pass什么都不做。它是一个空语句占位符。 我想给你们举个例子,能更好地说明这一点。

>>> some_list = [0, 1, 2]
... for element in some_list:
...     if element == 1:
...         print "Pass executed"
...         pass
...     print element
... 
0
Pass executed
1
2

... for element in some_list:
...     if element == 1:
...         print "Continue executed"
...         continue
...     print element
... 
0
Continue executed
2

是的,他们做的事情完全不同。Pass只是什么都不做,而continue则继续进行下一次循环迭代。在您的示例中,如果在if之后添加另一条语句,区别就会很明显:在执行pass之后,将执行这条进一步的语句。在继续之后,它就不会了。

>>> 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

在这些例子中,没有。如果语句不是循环中的最后一个,那么它们的效果就非常不同。