Comments 11
Вы про возможность комбинировать бинарные операторы? Да, она, конечно, не самая востребованная, но с другой стороны, вреда от неё не так много. Два минуса должны были поймать тесты. Точно так же можно передержать минус и получить вместо a-b
выражение a--b
. Или случайно поставить запятую в присваивании вместо точки: a = 5,3
и получить кортеж. Надо, конечно, при разработке стремится сделать такие ошибки маловероятными, но от опечаток никак не застраховаться. (Мораль: тесты — наше всё.)
Вообще это как бы не «фича». Возможность написания ++i
вытекает из грамматики языка, чтобы «убрать» эту возможность нужно усложнить грамматику. Запрет на последовательные унарные операторы я что‐то нигде не видел, хотя их и нужно писать с пробелом во многих языках из‐за существования инкремента/декремента (или из‐за того, что унарного плюса нет, а --
начинает комментарий — это я про lua).
Комбинирование унарных/бинарных операторов проходит по тому же разряду.
if (foo);
if (a=b)
Правда при первом применении все горит красным как в аду.Да, интересный вышел DSL с морзянкой. Вроде бы идея на поверхности, но попробуй додумайся. :)
>>> +--+_+-+_++_+--_+_-_+-+-+-___++++_+-_-+++_+-+_--++--_
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
+--+_+-+_++_+--_+_-_+-+-+-___++++_+-_-+++_+-+_--++--_
NameError: name '_' is not defined
Балуемся с унарными операторами в Python