целые числа в python являются неизменяемыми, и поэтому пост-приращение не допускается, а предварительный прирост не работает.
И так как целые числа являются неизменными, единственным способом для изменения, является переназначение их следующим образом:
x += 1
++
не является оператором. Это два оператора +
. Оператор +
является тождественным оператором, который ничего не делает, поэтому ++x
не влияет на переменную.
Для уточнения:
++x
разбирает к +(+x)
который переводит к x
На практике оператор identiy +
не используется часто. Ниже приведено определение в документации Python:
Оператор унарного +
(плюс) дает свой числовой аргумент без изменений.
Вот пример, который я нашел в StackOverflow, где она используется с десятичным округлением:
>>> from decimal import Decimal
>>> obj = Decimal('3.1415926535897932384626433832795028841971')
>>> +obj != obj # The __pos__ function rounds back to normal precision
True
>>> obj
Decimal('3.1415926535897932384626433832795028841971')
>>> +obj
Decimal('3.141592653589793238462643383')
Что касается поста приращения: Так как этот оператор не определен в Python, x++
дает синтаксическую ошибку, как синтаксический анализатор не может понять смысл этого выражения.
IMHO Pyton должен ПРЕДОСТЕРЕЖЕНИЕ, когда программист делает ++
, потому что это может привести к многочисленным ошибкам со стороны разработчиков C/C++/C#, целью которых является выполнение предварительного приращения переменной.
'++ ix' в Python эквивалентен' + (+ ix) '(т. Е.' Ix'). Аналогично для '- (- ix)'. http://stackoverflow.com/questions/774784/is-it-possible-to-overload-operators-in-python/774791#774791/http://stackoverflow.com/questions/470139/why-does-12- 3 – kennytm
Попробуйте найти унарный оператор + в python –
В Python целые числа не изменяются, оператор будет неэффективен. Чтобы увеличить один, используйте 'ix + = 1', что эквивалентно' ix = ix + 1'. –