Пожалуйста, объясните оператор continue

Пожалуйста, может ли кто-нибудь объяснить оператор continue, я изо всех сил пытался объяснить его до моего понимания, но все усилия были тщетны. Вот пример программы, которую я нашел в документации по python, и я не могу ее понять.

for num in range(2, 10):
    if num % 2 == 0:
        print("Found an even number", num)
        continue
    else:
        print("Found a number", num)

person GoZaddy    schedule 29.12.2016    source источник
comment
это просто заставляет код продолжаться со следующей итерацией цикла. на самом деле не требуется в вашем примере.   -  person Joe Bourne    schedule 30.12.2016
comment
Вы проверяли документы Python? Вы найдете подробные сведения о том, что делает continue.   -  person Moses Koledoye    schedule 30.12.2016
comment
документы. python.org/2/tutorial/   -  person Prune    schedule 30.12.2016


Ответы (1)


Оператор continue заставляет Python пропустить оставшуюся часть текущей итерации цикла и перейти к началу следующей итерации.

См. это страница документации для Python 3. Исходный пример на этой странице:

>>> for num in range(2, 10):
...     if num % 2 == 0:
...         print("Found an even number", num)
...         continue
...     print("Found a number", num)

Found an even number 2
Found a number 3
Found an even number 4
Found a number 5
Found an even number 6
Found a number 7
Found an even number 8
Found a number 9

Когда встречается continue, print в конце цикла пропускается, и выполнение снова переходит к for, чтобы получить следующую итерацию. Обратите внимание, что для четных чисел печатается «Найдено четное число», а «Найдено число» не печатается. Это потому, что continue пропустил остальную часть тела цикла.


Ваша модификация примера — вставка else — делает continue устаревшим, потому что print("Found a number", num) все равно не будет выполняться (он находится в ветке else).

Таким образом, вы обнаружили, что continue (а также break) часто являются альтернативным механизмом потока управления для if...else. Что использовать, зависит от ситуации и стилевых предпочтений.

person Eli Bendersky    schedule 29.12.2016
comment
И после перехода к следующей итерации заставляет ли это python вернуться к пропущенной итерации? - person GoZaddy; 30.12.2016
comment
@Faruq: Нет. Например, в случае 2 вызывается continue и переходит к следующей итерации, равной 3 (следующее значение, полученное range). Он никогда не вернется к 2 снова. - person Eli Bendersky; 30.12.2016
comment
о, я думаю, я понял это сейчас. Извините за вопросы, мне всего 13 - person GoZaddy; 30.12.2016
comment
@Фарук: все в порядке. Я полагаю, что Python не тратит слишком много времени на объяснение continue, потому что он очень знаком с C. Имеет смысл играть с простыми примерами, пока идея не утонет. Другая идея — следить за выполнением этого цикла в отладчике (pdb) - person Eli Bendersky; 30.12.2016