Как Python оценивает выражение 1+++2
?
Сколько когда-либо +
я положил между, это печать 3
в качестве ответа. Пожалуйста, кто-нибудь может объяснить это поведение
И для 1--2
это печать 3
а для 1---2
это печать -1
Как 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 или ++ в С++). Они просто показывают, что число положительное.
Нет такого оператора ++. Однако есть унарный + оператор и унарный оператор. Оператор унарного + не влияет на его аргумент. Унарный оператор отрицает свой оператор или мулитизирует его на -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
Попытка Unary Plus и Unary минус:
Оператор унарного - (минус) дает отрицание его числового аргумента.
Оператор унарного + (плюс) дает свой числовой аргумент без изменений.
>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3
Подумайте, что это 1 + (+1 * (+ 1 * 2))). Первый + - оператор, а следующие знаки плюс - знак второго операнда (= 2).
Точно так же, как 1 --- 2 совпадает с 1 - - (- (2)) или 1- (-1 * (- 1 * (2))
Я считаю, что он анализируется как, первый + как двоичная операция (add), а остальные - как унарные операции (делают положительные).
1 + (+(+2))
Это просто. В Python нет операторов пост-инкременции или пост-декременции.
Смотрите здесь: http://mail.python.org/pipermail/python-list/2006-January/361771.html