在python中的for循环中,`continue`和`pass`之间有区别吗?

Auf*_*ind 245 python syntax continue

两个python关键字之间是否有任何显着差异continue,pass如示例中所示

for element in some_list:
    if not element:
        pass
Run Code Online (Sandbox Code Playgroud)

for element in some_list:
    if not element:
        continue
Run Code Online (Sandbox Code Playgroud)

我应该知道吗?

Sve*_*ach 357

是的,他们完全不同的事情. 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
Run Code Online (Sandbox Code Playgroud)

  • @HardikGajjar:由于`pass`关键字没有做任何事情,它只在你在语法上需要一个缩进的套件,但不想做任何事情时才有用.一个常见的例子是,如果你想忽略一些异常,你可以使用`除SomeException:pass`.还有许多其他用例.你不会严格需要一个关键字,因为你可以使用任何其他没有做任何事情的语句(例如`0`是一个没有效果的完全有效的语句),但是有一个关键字允许你要更明确地不想做任何事情. (26认同)
  • 我完全同意你的回答.但我仍然怀疑传递关键字是否需要?并且需要但为什么?谢谢 (4认同)

小智 65

是,有一点不同.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
Run Code Online (Sandbox Code Playgroud)


tMC*_*tMC 21

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

如果传递在循环结束时,差异可以忽略不计,因为无论如何流量只会返回到循环的顶部.


Job*_*ews 13

for 循环中 pass 和 continue 的区别:

那么为什么要传入python呢?

如果你想创建一个空的类、方法或块。

例子:

class MyException(Exception):
    pass


try:
   1/0
 except:
   pass
Run Code Online (Sandbox Code Playgroud)

在上面的例子中没有 'pass' 会抛出 IndentationError。


mul*_*ces 10

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

for element in some_list:
    if not element:
        pass
    print element  
Run Code Online (Sandbox Code Playgroud)

与...非常不同

for element in some_list:
    if not element:
        continue
    print element
Run Code Online (Sandbox Code Playgroud)


fro*_*die 6

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

查看python 文档


Wal*_*alk 5

它们之间是有区别的,
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
Run Code Online (Sandbox Code Playgroud)