Почему 1+++2 = 3?
-
19-08-2019 - |
Вопрос
Как Python оценивает выражение 1+++2
?
Сколько когда-либо +
Я вставляю между ними, оно печатается 3
как ответ.Пожалуйста, кто-нибудь может объяснить такое поведение
И для 1--2
это печать 3
и для 1---2
это печать -1
Решение
Ваше выражение такое же, как:
1+(+(+2))
Любому числовому выражению может предшествовать -
сделать его отрицательным или +
ничего не делать (опция присутствует для симметрии).С отрицательными знаками:
1-(-(2)) = 1-(-2)
= 1+2
= 3
и
1-(-(-2)) = 1-(2)
= -1
Я вижу, вы уточнили свой вопрос, сказав, что у вас образование C.В Python нет таких операторов приращения, как ++
и --
на C, что, вероятно, и стало причиной вашего замешательства.Чтобы увеличить или уменьшить переменную i
или j
в Python используйте этот стиль:
i += 1
j -= 1
Другие советы
Дополнительные + не являются инкрементами (например, ++a или a++ в C++).Они просто показывают, что число положительное.
Нет такого оператора ++.Однако есть унарный оператор + и унарный оператор -.Унарный оператор + не влияет на свой аргумент.Унарный оператор - отменяет свой оператор или умножает его на -1.
+1
-> 1
++1
-> 1
Это то же самое, что +(+(1))
1+++2
-> 3, потому что это то же самое, что 1+(+(+(2))
Аналогично вы можете использовать --1, чтобы означать - (-1), что равно +1.
--1
-> 1
Для полноты картины * унарный оператор отсутствует.Итак, *1 — это ошибка.Но есть ** оператор, который является мощностью, требуется 2 аргумента.
2**3
-> 8
1 + (+ (+ 2)) = 3
1 - (-2) = 3
1 - (- (- 2)) = -1
Попытка Унарный плюс и Унарный минус : р>
Унарный оператор - (минус) возвращает отрицание своего числового аргумента.
Унарный оператор + (плюс) возвращает свой числовой аргумент без изменений.
>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3
Я считаю, что он анализируется как первый + как бинарная операция (добавить), а остальные как унарные операции (сделать положительным). Р>
1 + (+(+2))
Думайте как 1 + (+1 * (+ 1 * 2))). Первый знак «+» является оператором, а последующие знаки «плюс» являются знаком второго операнда (= 2).
Точно так же, как 1 --- 2 - это то же самое, что и 1 - - (- (2)) или 1- (-1 * (- 1 * (2))