Инструкция pass Python

Инструкция pass

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

pass, как временная заглушка

Как часто у вас возникает прекрасная идея, которую вы откладываете на потом? У программистов — довольно часто. Однако нельзя просто так бросить написание функции или блока кода. Если вы попробуете так сделать, интерпретатор выдаст ошибку.

>>> def solve_all_problems():
... 
  File "<stdin>", line 2
    ^
IndentationError: expected an indented block after function definition on line 1
>>> for i in data_structure:
...
  File "<stdin>", line 2
    ^
IndentationError: expected an indented block after 'for' statement on line 1

В таких случаях на помощь приходит инструкция pass. Мы просто оставляем ее как заглушку после отступа, пока не вдохновимся написать эту часть кода. Чтобы не забыть, что должен делать блок, который замещает pass, мы можем добавить комментарий, TODO-комментарий или строки документации.

def solve_all_problems(sample):
    '''solves all problems'''
    pass  # TODO: Должна возвращать 42 на первой выборке

Пропускать части кода полезно на раннем этапе проектирования программы. Создавая макет, мы не станем задерживаться на мелочах, и просто обозначим важные, на наш взгляд, компоненты программы. Детали их реализации можно временно пропустить с помощью инструкции pass. Так вы избежите дублирования и избыточного кода еще до того, как ваша программа заработает.

class Table
    def _get_row(self):
        pass

    def _set_row
        pass

class SiteTable(Table):
    pass

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

def func(lst):
    for i in lst:
        if i < 0:
            pass
            # wait_30_mins()
        else:
            set_true(i)

pass, как полноценный компонент программы

Инструкция pass не всегда является временным решением. Иногда она заполняет блоки, в которых в принципе не должно ничего находиться Например, при обработке исключений. Не всегда ошибка может привести к серьезным последствиям. Иногда они настолько незначительны, что нет нужды вносить их в лог. Однако в блоке except обязательно должен быть код.

try:
    smth.append(lst[1])
except IndexError:
    pass

В случае, если список lstне содержит элемента с индексом 1, мы просто продолжим выполнение программы, без логирования этой ошибки или остановки работы. Еще один способ использования pass - в цепочках if-elif. Инструкция pass после elif, помогает сохранять логику проверки. В нашем примере все значения меньше нуля запускают func2(), кроме -1.

if index > 0:
    func1()
elif index == -1:
    pass
elif index < 0:
    func2()
else:
    raise ValueError("Индекс не должен быть равен нулю")

Инструкция pass может использоваться в абстрактных методах.

import abc
class Table(abc.ABC):
    @abc.abstractmethod
    def get_headers(self):
        pass

class RuTable(Table):
    def get_headers:
        return ["Автор", "Книга"]

class EnTable(Table):
    def get_headers
        return ["Author", "Book"]

Абстрактный метод get_headers абстрактного класса Table никогда не будет использоваться — но все подклассы обязательно должны перезаписать его, каждый со своей логикой. Мы можем написать в него что угодно, но зачем, если есть инструкция pass?

Заключение

Инструкция pass выполняет роль заглушки, позволяя блоку кода ничего не делать. Её часто используют как временное решение при проектировании, разработке и тестировании на Python. В завершенных программах эта инструкция используется везде, где синтаксис требует написать блок кода, но логика подсказывает ничего не делать.

Практический Python для начинающих
Практический Python для начинающих

Станьте junior Python программистом за 7 месяцев

 7 месяцев

Возможно будет интересно

🏆 Hello, world! Python
Новичок
🏆 Hello, world!

Мы вчера запустили новый www.pylot.me. Должны были в следующую среду, но запустили вчера.

2022-10-04
Как практиковаться в Python? Python
Новичок
Как практиковаться в Python?

Для улучшения качества знаний и повышения уровня программиста, необходим постоянный практикум. Где можно это организовать самостоятельно, и как практиковаться в Python?

2022-10-19
Условные конструкции и сопоставление структурных шаблонов Шпаргалки
Новичок
Условные конструкции и сопоставление структурных шаблонов

Шпаргалка по условным конструкциям и сопоставлению структурных шаблонов

2022-11-09