Есть ли разница между` continue `и` pass ' в цикле for в python?


есть ли какая-либо существенная разница между двумя ключевыми словами python continue и pass как в примерах

for element in some_list:
    if not element:
        pass

и

for element in some_list:
    if not element:
        continue

Я должен знать?

9 172

9 ответов:

Да, они делают совершенно разные вещи. 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

Да, есть разница. 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

continue будет прыгать обратно в верхнюю часть цикла. pass продолжит обработку.

Если pass находится в конце цикла, разница незначительна, так как поток все равно вернется в верхнюю часть цикла.

в вашем примере не будет никакой разницы, так как оба оператора появляются в конце цикла. pass - это просто заполнитель, в том, что он ничего не делает (это передает выполнение следующего оператора). continue, С другой стороны, имеет определенную цель: он рассказывает цикл дальше как будто он только что перезапустился.

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

отличается от

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

Да, есть разница. Continue фактически пропускает остальную часть текущей итерации цикла (возвращаясь к началу). Pass - это пустой оператор, который ничего не делает.

посмотреть python docs

в этих примерах нет. Если оператор не самый последний в цикле, то у них есть очень различные эффекты.

между ними есть разница,
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
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.

Pass ничего не делает. На вычисления это не влияет. Но continue возвращается к началу цикла, чтобы выполнить следующее вычисление.

рассмотрим это следующим образом:

Pass: Python работает исключительно на отступ! Нет пустых фигурных скобок, в отличие от других языков.

Итак, если вы ничего не хотите делать, если условие истинно, нет другого варианта, кроме pass.

и дальше: это полезно только в случае петель. В случае, если для диапазона значений вы не хотите выполнять остальные операторы цикла после того, как это условие верно для этого конкретный проход, то вам придется использовать продолжить.