Флаг -O удаляет assert и код, зависящий от истинности debug; это не универсальное ускорение программы. -OO дополнительно удаляет docstring.
Что делает флаг -O при запуске Python (python -O main.py)?
Флаг -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.