Как работают циклы for и while? Что делают break, continue, pass?
Краткий ответ (для собеседования): for в Python перебирает элементы итерируемого объекта (списка, строки, словаря и т.д.) и выполняет тело цикла для каждого элемента. while повторяет выполнение тела цикла, пока истинно заданное логическое условие. break немедленно прерывает цикл, continue пропускает текущую итерацию и переходит к следующей, pass ничего не делает и служит заглушкой в местах, где синтаксически требуется инструкция.
Развернутое объяснение
Цикл for
for в Python — это «для каждого элемента в коллекции». Он сам берёт по очереди элементы из итерируемого объекта и завершает работу, когда элементы заканчиваются. Пример:
numbers = [1, 2, 3]
for n in numbers:
print(n)Особенности, которые важно понимать:
Работает с любыми итерируемыми объектами (списки, строки, словари, множества, range и т.д.).
Не нужно вручную управлять индексом: за этим стоит итератор, который for использует «под капотом».
Для backend‑разработчика это базовый способ пройтись по коллекции данных: запросы, записи из БД, строки файла логов.
Цикл while
while повторяет блок кода, пока условие истинно. Пример:
count = 0
while count < 3:
print(count)
count += 1Особенности:
Вы сами отвечаете за изменение состояния внутри цикла (иначе можно получить бесконечный цикл).
Уместен там, где важно именно условие (например, ждать, пока придёт ответ или пока соединение не будет установлено).
Оператор break
break немедленно завершает текущий цикл (for или while), управление переходит на первую строку после цикла. Пример:
for n in range(10):
if n == 5:
break
print(n)
# выведет 0, 1, 2, 3, 4Используется, когда условие завершения известно только внутри цикла (поиск элемента, проверка ограничения, обработка первой подходящей записи).
Оператор continue
continue прерывает текущую итерацию, но не завершает цикл — управление переходит к следующей итерации. Пример:
for n in range(5):
if n == 2:
continue
print(n)
# выведет 0, 1, 3, 4Это помогает пропустить «ненужные» случаи без вложенных if и держать тело цикла чище.
Оператор pass
pass — это «пустая» инструкция, которая ничего не делает. Она нужна там, где синтаксически требуется тело блока, но логики пока нет. Примеры:
for n in range(5):
if n == 3:
pass # пока просто пропускаем этот случай
print(n)
def stub_handler(request):
pass # заглушка обработчика, реализуем позжеВажно не путать:
break — завершает цикл;
continue — перескакивает на следующую итерацию;
pass — просто стоИт на месте, управление идёт дальше по коду внутри блока.