Почему Python рассматривает последовательные повторения оператора сложения как просто одно повторение? - PullRequest
3 голосов
/ 04 августа 2020

Сегодня я заметил, что интерпретатор Python рассматривает последовательные повторения оператора сложения как всего лишь одно повторение оператора. Например:

>>> 1 ++ 2
3

Какой смысл в том, чтобы просто не выдавать ошибку при возникновении такого события? Мне кажется более правдоподобным, что программист, набравший

>>> 1 -+-++ 2

, просто сошел с ума; очень маловероятно, что это когда-либо преднамеренно появится в коде. не делает число положительным, а просто выполняет операцию идентификации.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Потому что он перегружен. Это оператор сложения (реализованный методом __add__), а также положительный оператор унарный (реализованный __pos__). Сравните это с -, который является оператором вычитания (__sub__) и унарным отрицательным оператором (__neg__).

Так, например, 1 ++ 2 разбирается как 1 + (+ 2), что упрощается до 1 + 2 для целых чисел, но не обязательно для других типов. См. Какова цель унарного оператора + (pos) в Python?

0 голосов
/ 04 августа 2020

Это математика. Хотя для нормального человека это не имеет смысла, python + (+ 1) и - (- 1) равно +, + (- 1) и - (+ 1) равно -. Возвращаясь к вопросу, это делает не только python. Это математическое мышление. Это как сказать компьютеру, что переменная с именем string равна 29. Звучит неправильно, но компьютер считает, что это нормально.

...