Это старый (паскаль) синтаксис для оператора присваивания. Он будет использоваться так:
a := 45;
Он может быть и на других языках, возможно, аналогичным образом.
++
не является оператором. Это два оператора +
. Оператор +
- это оператор тождества , который ничего не делает. (Уточнение: унарные операторы +
и -
работают только с числами, но я предполагаю, что вы не ожидаете, что гипотетический оператор ++
будет работать со строками .)
++count
Анализирует как
+(+count)
, что переводится как
count
Вы должны использовать немного более длинный оператор + =
, чтобы делать то, что вы хотите сделать:
count += 1
Я подозреваю, что + Операторы +
и -
были опущены для согласованности и простоты. Я не знаю точных аргументов Гвидо ван Россума в пользу своего решения, но могу представить несколько аргументов:
++ count
неоднозначен, поскольку это могло быть +
, +
, count
(два унарных оператора +
) так же легко, как и + +
, count
(один унарный ++
оператор). Это не значительная синтаксическая двусмысленность, но она существует. ++
- не более чем синоним + = 1
. Это сокращение было изобретено, потому что компиляторы C были глупы и не знали, как оптимизировать a + = 1
в инструкцию inc
, которая есть на большинстве компьютеров. В наши дни оптимизации компиляторов и языков, интерпретируемых с помощью байт-кода, добавление операторов к языку, позволяющих программистам оптимизировать свой код, обычно не одобряется, особенно в таких языках, как Python, который разработан, чтобы быть последовательным и читаемым. ++
- это смешивание различий (как в приоритете, так и в возвращаемом значении) между операторами пре- и пост-инкремента / декремента, а Python любит устранять языковые ошибки "-с. Проблемы приоритета пре- / пост-инкремента в C довольно сложны, и их невероятно легко испортить. Когда вы хотите увеличить или уменьшить, вы обычно хотите сделать это с целым числом. Примерно так:
b++
Но в Python целые числа неизменяемы . То есть вы не можете их изменить. Это связано с тем, что целые объекты могут использоваться под несколькими именами. Попробуйте следующее:
>>> b = 5
>>> a = 5
>>> id(a)
162334512
>>> id(b)
162334512
>>> a is b
True
a и b выше на самом деле являются одним и тем же объектом. Если вы увеличили a, вы также увеличите b. Это не то, что вам нужно. Значит, придется переназначить. Примерно так:
b = b + 1
Или проще:
b += 1
Что переназначит b
на b + 1
. Это не оператор приращения, потому что он не увеличивает b
, а переназначает его.
Вкратце: Python ведет себя здесь по-другому, потому что это не C и не является низкоуровневой оболочкой для машины. код, но это высокоуровневый динамический язык, где приращения не имеют смысла,