В случае Python, почему утверждения включены по умолчанию? Почему python делает это не так, как другие языки? ** Есть ли для этого особая причина - время компиляции и интерпретация?
Потому что, вообще говоря, нет причин не делать этого. Python не является быстрым языком, и наличие кода, который выглядит так, как будто он должен работать по умолчанию, но не является странным. Кстати, это распространяется на большее количество языков, например, в Rust есть макрос assert!
, который всегда запускает , и отдельный debug_assert!
, который работает только в режиме отладки.
Это свойство также используется не-xunit пакеты тестирования, такие как pytest
, которые используют и переписывают утверждения, чтобы сделать их лучше (и удобнее, и с меньшими ограничениями) assert*
методы.
Примечание: я также новичок в python и там, где я работаю, мы не запускаем никакого кода в производстве с включенными флагами оптимизации. Является ли это обычной практикой при развертывании python приложений?
Если вы спрашиваете, распространен ли запуск pyhton без -O
, тогда да. -O
сравнительно мало делает, что полезно: я не думаю, что когда-либо видел кодовую базу, использующую __DEBUG__
и в обход assert
всегда чувствую себя отвратительно. И -OO
в основном только негативные вещи.
Единственные случаи, которые я видел, которые обычно используют -O
/ -OO
, это:
- Windows упаковка, где это выглядит нечасто
- ошибочными попытками запутывания