Есть ли разница между `continue` и` pass` в цикле for в python? - PullRequest
225 голосов
/ 28 февраля 2012

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

for element in some_list:
    if not element:
        pass

и

for element in some_list:
    if not element:
        continue

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

Ответы [ 9 ]

325 голосов
/ 28 февраля 2012

Да, они делают совершенно разные вещи. 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
61 голосов
/ 28 февраля 2012

Да, есть разница.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
19 голосов
/ 28 февраля 2012

continue вернется к началу цикла. pass продолжит обработку.

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

9 голосов
/ 28 февраля 2012

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

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

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

for element in some_list:
    if not element:
        continue
    print element
4 голосов
/ 28 февраля 2012

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

См. документы по питону

3 голосов
/ 30 апреля 2016

Между ними есть разница,
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
3 голосов
/ 28 февраля 2012

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

1 голос
/ 29 марта 2018

Рассмотрим это так:

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

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

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

1 голос
/ 07 ноября 2017
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 ничего не делает.На вычисления это не влияет.Но продолжить возвращает к началу цикла, чтобы продолжить со следующим вычислением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...