Что делает флаг -O при запуске Python (python -O main.py)?

Флаг -O удаляет assert и код, зависящий от истинности __debug__; это не универсальное ускорение программы. -OO дополнительно удаляет docstring.

Короткий ответ

Что ответить на собеседовании

Флаг -O удаляет assert и код, зависящий от истинности debug; это не универсальное ускорение программы. -OO дополнительно удаляет docstring.

Подробный разбор

Ответ с пояснениями

Флаг -O удаляет assert и код, зависящий от истинности debug; это не универсальное ускорение программы. -OO дополнительно удаляет docstring.

В оптимизированном режиме __debug__ становится False, а проверки assert не выполняются. Поэтому нельзя использовать assert для проверки пользовательского ввода, прав доступа или других обязательных условий: нужны явные исключения. Кеш байткода получает отметку .opt-1.pyc; при -OO — .opt-2.pyc. Сам по себе -O не превращает Python в оптимизирующий нативный компилятор и не обещает заметного ускорения. Если программа полагается на побочные эффекты выражения внутри assert, её поведение изменится.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее