2012-02-28 82 views
136

是否有例子Python中的for循环中的`continue`和`pass`有区别吗?

for element in some_list: 
    if not element: 
     pass 

for element in some_list: 
    if not element: 
     continue 

我应该知道的两个Python关键字之间continuepass等之间的任何显著区别?

+4

@ S.Lott:例子:'while true:;在[python docs](http://docs.python.org/tutorial/controlflow.html#pass-statements)中通过#繁忙 - 等待键盘中断(Ctrl + C)'使我感到困惑,我没有在这种情况下,它没有发现它的行为相当于持续,或者其他意图。第一句话*“通过声明什么都不做”*表示我的问题的所有答案,但不知何故,它没有吸引我的眼球。 – Aufwind 2012-02-28 15:52:05

回答

213

是的,他们做了完全不同的事情。 pass根本什么也不做,而continue继续下一个循环迭代。在您的示例中,如果在if之后添加了另一个语句,则区别将变得明显:在执行pass之后,将执行此更多语句。在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 
+2

我完全同意你的答案。但我仍然有问题关于pass关键字是否需要?需要但为什么?谢谢 – 2015-11-09 02:52:48

+12

@HardikGajjar:由于'pass'关键字没有任何作用,它只在语法上需要缩进套件时才有用,但不想做任何事情。一个常见的例子是,如果你想忽略一些异常,你可以使用'除了SomeException:pass'。还有很多其他用例。你不会严格地需要一个关键字,因为你可以使用任何其他没有做任何事情的语句(例如'0'是一个完全有效的语句,没有效果),但是有一个关键字可以允许你更明确地表示不想做任何事情。 – 2015-11-11 09:04:35

3

在这些例子中,如果声明是而不是最后一个循环,那么他们有非常不同的影响。

6

continue将跳回到循环的顶部。 pass将继续处理。

如果pass在循环的结尾处,则差异可以忽略不计,因为无论如何流只会回到循环的顶部。

7

在你的例子中,没有区别,因为两个语句都出现在循环结尾。 pass只是一个占位符,它不做任何事情(它传递给下一个语句)。另一方面,continue有一个确定的目的:它告诉循环到继续就好像它刚刚重新启动。

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

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

是非常不同的,是有区别的。 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 
4

是的,是有区别的。 Continue实际上会跳过当前循环的其余部分(返回到开头)。 Pass是一个空白语句,它什么都不做。

python docs

1

他们之间的差异,
continue跳过循环的当前迭代,并执行下一次迭代。
pass什么都不做。这是一个空的语句占位符。
我宁愿给你一个例子,这会更好地阐明这一点。

>>> 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 
0
x = [1,2,3,4] 
for i in x: 
    if i==2: 
     pass #Pass actually does nothing. It continues to execute statements below it. 
     print "This statement is from pass." 
for i in x: 
    if i==2: 
     continue #Continue gets back to top of the loop.And statements below continue are executed. 
     print "This statement is from continue." 

输出是

>>> This statement is from pass. 

同样,让运行相同的代码具有小的改动。

x = [1,2,3,4] 
for i in x: 
    if i==2: 
     pass #Pass actually does nothing. It continues to execute statements below it. 
    print "This statement is from pass." 
for i in x: 
    if i==2: 
     continue #Continue gets back to top of the loop.And statements below continue are executed. 
    print "This statement is from continue." 

输出是 -

>>> This statement is from pass. 
This statement is from pass. 
This statement is from pass. 
This statement is from pass. 
This statement is from continue. 
This statement is from continue. 
This statement is from continue. 

通行证没有做任何事情。计算不受影响。但是继续回到循环的顶部,以便下一次计算。

+3

与已有的其他答案有什么特别的区别? – 2017-11-07 16:29:16