Удивительный язык python. Правда, удивляет он меня как правило неприятно.
На этот раз оказалось, что ключ -O («optimize generated bytecode slightly») при запуске — угадайте, что делает — убирает assert'ы. То есть оператор «assert» после такого делает ничего, пропускаем, продолжаем работать. Я-то надеялся, что только в java подобная ерунда встречается.
Может быть, дело в том, как я отношусь к assert'ам. Для меня это всегда было что-то вроде «убедиться, что x верно, потому что если нет, то лучше упасть, чем натворить бед». И, как следствие, их можно использовать для краткой записи «if not x: raise НеважноКакойException». Альтернативная точка зрения (популярная, например, у мобильных разработчиков): главное, чтобы приложение не падало, а если оно будет делать при этом полную ерунду и разгром, то это не беда.
На этот раз оказалось, что ключ -O («optimize generated bytecode slightly») при запуске — угадайте, что делает — убирает assert'ы. То есть оператор «assert» после такого делает ничего, пропускаем, продолжаем работать. Я-то надеялся, что только в java подобная ерунда встречается.
Может быть, дело в том, как я отношусь к assert'ам. Для меня это всегда было что-то вроде «убедиться, что x верно, потому что если нет, то лучше упасть, чем натворить бед». И, как следствие, их можно использовать для краткой записи «if not x: raise НеважноКакойException». Альтернативная точка зрения (популярная, например, у мобильных разработчиков): главное, чтобы приложение не падало, а если оно будет делать при этом полную ерунду и разгром, то это не беда.
Amazing python language. True, he surprises me, as a rule, unpleasantly.
This time, it turned out that the -O switch ("optimize generated bytecode slightly") at startup — guess what it does — removes the assertes. That is, the “assert” operator does nothing after this, skip it, continue to work. I was hoping that only in java did such nonsense occur.
Maybe the thing is how I feel about assert'am. For me, it was always something like “making sure x is true, because if not, it’s better to fall than to cause trouble.” And, as a result, they can be used to write briefly “if not x: raise No matter What Exception”. An alternative point of view (popular, for example, among mobile developers): the main thing is that the application does not crash, and if it does complete nonsense and rout, it does not matter.
This time, it turned out that the -O switch ("optimize generated bytecode slightly") at startup — guess what it does — removes the assertes. That is, the “assert” operator does nothing after this, skip it, continue to work. I was hoping that only in java did such nonsense occur.
Maybe the thing is how I feel about assert'am. For me, it was always something like “making sure x is true, because if not, it’s better to fall than to cause trouble.” And, as a result, they can be used to write briefly “if not x: raise No matter What Exception”. An alternative point of view (popular, for example, among mobile developers): the main thing is that the application does not crash, and if it does complete nonsense and rout, it does not matter.
У записи 7 лайков,
0 репостов.
0 репостов.
Эту запись оставил(а) на своей стене Олег Давыдов