Оператор pass не делает ничего. Он может использоваться когда синтаксически требуется присутствие оператора, но от программы не требуется действий. Например:
>>> while True: ... pass # Ожидание прерывания c клавиатуры (Ctrl+C) в режиме занятости ... Этот оператор часто используется для создания минималистичных классов, к примеру исключений (exceptions), или для игнорирования нежелательных исключений: >>> class ParserError(Exception): ... pass ... >>> try: ... import audioop ... except ImportError: ... pass ... Другой вариант: pass может применяться в качестве заглушки для тела функции или условия при создании нового кода, позволяя вам сохранить абстрактный взгляд на вещи. С другой стороны, оператор pass игнорируется без каких-либо сигналов и лучшим выбором было бы породить исключение NotImplementedError:
>>> def initlog(*args): ... raise NotImplementedError # Открыть файл для логгинга, если он ещё не открыт ... if not logfp: ... raise NotImplementedError # Настроить заглушку для логгинга ... raise NotImplementedError('Обработчик инициализации лога вызовов') ... Если бы здесь использовались операторы pass, а позже вы бы запускали тесты, они могли бы упасть без указания причины. Использование NotImplementedError принуждает этот код породить исключение, сообщая вам конкретное место, где присутствует незавершённый код. Обратите внимание на два способа порождения исключений. Первый способ, без сообщения, но сопровождаемый комментарием, позволяет вам оставить комментарий когда вы будете подменять выброс исключения рабочим кодом, который, в свою очередь, в идеале, будет хорошим описанием блока кода, для которого исключение предназначалось заглушкой. Однако, передача сообщения вместе с исключением, как в третьем примере, обуславливает более насыщенный информацией вывод при отслеживании ошибки.
Назад Вперед
8 8 8
| |