Ответ 1
Python не поддерживает ++
, но вы можете сделать:
number += 1
Возможный дубликат:
Python: поведение операторов увеличения и уменьшения
Я всегда смеялся над собой, когда оглядывался назад на свои дни на VB6 и думал: "Какой современный язык не позволяет увеличиваться с двойными знаками плюс?":
number++
К моему удивлению, я не могу найти ничего об этом в документации по Python. Должен ли я действительно подвергать себя number = number + 1
? Разве люди не используют обозначение ++ / --
?
Python не поддерживает ++
, но вы можете сделать:
number += 1
Проще говоря, операторы ++
и --
не существуют в Python, потому что они не будут операторами, они должны быть операторами. Все модификации пространства имен в Python - это утверждение для простоты и согласованности. Это одно из дизайнерских решений. И поскольку целые числа неизменяемы, единственный способ "изменить" переменную - это переназначить ее.
К счастью, у нас есть замечательные инструменты для случаев использования ++
и --
на других языках, например enumerate()
и itertools.count()
.
Вы можете сделать:
number += 1
Да. Оператор ++
недоступен в Python. Гвидо не любит этих операторов.
Вы можете использовать:
number += 1
Основная причина ++ пригодится в C-подобных языках для отслеживания индексов. В Python вы обрабатываете данные абстрактным образом и редко увеличиваетесь с помощью индексов и т.д. Ближайшей душой к ++
является метод итераторов next
.
Взгляните на поведение операторов инкремента и декремента в Python, чтобы объяснить, почему это не работает.
У Python действительно нет ++ и -, и я лично никогда не чувствовал, что это такая потеря.
Я предпочитаю функции с ясными именами для операторов с не всегда понятной семантикой (отсюда и классический вопрос интервью о ++ x vs. x ++ и трудности перегрузки). Я также никогда не был большим поклонником того, что пост-инкремент делает для удобочитаемости.
Вы всегда можете определить некоторый класс-оболочку (например, накопитель) с понятной семантикой приращения, а затем сделать что-то вроде x.increment() или x.incrementAndReturnPrev()
Здесь есть объяснение: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python
Однако отсутствие этого оператора в философии питона повышает согласованность и позволяет избежать имплицитности.
Кроме того, этот тип приращений широко не используется в коде python, потому что у python есть сильная реализация шаблона итератора плюс функция перечисления.