Шаг 15.
Однострочники Python.
Краткая памятка по Python. Управляющие конструкции. Циклы

    На этом шаге мы вспомним особенности работы циклических конструкций.

    Для повтора выполнения фрагментов кода в Python существует два типа циклов:

    С их помощью можно легко написать занимающую всего две строки кода программу, которая будет выполняться бесконечно. Реализовать подобный повтор выполнения иным способом будет непросто (в качестве альтернативы можно воспользоваться рекурсией).

    В примере 1.11 показаны в действии оба варианта циклов.


Пример 1.11. Ключевые слова for и while
# Объявление цикла 
for for i in [0, 1, 2]: 
    print(i)

0
1
2

# Цикл while - аналогичная семантика 
j = 0
while j < 3: 
    print(j)
    j = j + 1

0
1
2

    Оба варианта циклов выводят целые числа 0, 1 и 2 в командную оболочку, но делают это по-разному.

    Цикл for объявляет переменную цикла i, принимающую последовательно все значения из списка [0, 1, 2]. Его выполнение продолжается, пока значения не закончатся.

    При использовании цикла while тело цикла выполняется до тех пор, пока не будет выполнено заданное условие - в данном случае, пока j < 3.

    Существуют два основных способа выхода из цикла:

Пример второго варианта приведен в примере 1.12.
Пример 1.12. Ключевое слово break
while True:
    break # цикл не бесконечный
print("hello world")
# hello world

    Мы создали цикл while с условием, тождественно равным True. Так что, на первый взгляд, кажется, будто он будет выполняться бесконечно. Бесконечный цикл while - распространенная практика при, например, разработке веб-серверов, бесконечно повторяющих процедуру ожидания нового вебзапроса и его обработки.

    Однако в некоторых случаях бывает нужно досрочно прервать выполнение цикла. В примере с веб-сервером имеет смысл приостановить выдачу файлов из соображений безопасности, если сервер подвергается атаке. В подобных случаях можно воспользоваться ключевым словом break для выхода из цикла и выполнения следующего за ним кода. В приведенном выше примере 1.12 после досрочного завершения цикла выполняется print("hello world").

    Можно также приказать интерпретатору Python пропустить определенные части цикла, не прибегая к досрочному выходу из него. Например, вместо полного останова веб-сервера пропустить вредоносные веб-запросы. Реализовать это можно с помощью оператора continue, завершающего выполнение текущей итерации цикла и возвращающего выполнение обратно к условию цикла (пример 1.13).


Пример 1.13. Использование ключевого слова continue
while True: 
    continue
    print("43") # недостижимый код

    Данный код выполняется бесконечно, но оператор print не выполняется никогда. Дело в том, что оператор continue завершает текущую итерацию цикла и возвращает поток выполнения в его начало, поэтому print() никогда не достигается. Подобный никогда не выполняемый код называется недостижимым (dead code). Поэтому оператор continue (как и оператор break) часто применяется при определенных условиях в среде условного выполнения if-else.

    На следующем шаге мы поговорим о функциях.




Предыдущий шаг Содержание Следующий шаг