Автор оригинала: Pankaj Kumar.
Как вы выполняете операцию приращения Python? Если вы идете с языка, такого как C ++ или Java, вы можете попробовать расширить аналогичную функциональность увеличения Python.
Но, как мы увидим в этой статье, это не совсем то же самое. Давайте посмотрим, как мы можем попытаться использовать аналогичную функциональность приращения ( ++
) операции в Python.
Приращение Python
Прежде чем идти с точными различиями, мы посмотрим, как мы можем увеличить переменную в Python.
Ниже приведен код показывает, как практически все программисты увеличивают целые числа или аналогичные переменные в Python.
>>> a = 10 >>> print(a) 10 >>> a += 1 >>> print(a) 11 >>> a += 100 >>> print(a) 111 >>> b = 'Hello' >>> b += 1 Traceback (most recent call last): File "", line 1, in TypeError: can only concatenate str (not "int") to str >>> b += ' from AskPython' >>> b 'Hello from AskPython'
Мы увеличили целочисленную переменную А
в последовательных шагах здесь. Также, поскольку +
Оператор Также обозначает Concatenation относительно строк, мы также можем добавить в строку на месте!
Можем ли мы после приращения А
на 1, используя A ++
?
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax
Ну, есть проблема здесь. Python, по дизайну, не позволяет использовать ++
«Оператор». ++
Срок, называется оператором приращения в C ++/Java, не имеет места в Python.
Почему нет ++ оператора в Python?
Если вы хотите понять это более подробно, вам нужно иметь какой-то опыт на дизайне языка программирования.
Опция не включать ++
Оператор в Python – это Решение дизайна Отказ Люди, которые несут ответственность за создание функций на языке Python, считали, что нет необходимости вводить оператор приращения в стиле CPP.
Когда интерпретатор Python разбирается в A ++
Символ с нашего ввода, он интерпретируется следующим образом:
- Так как двоичный
+
Оператор является оператором дополнения,A ++
будет рассматриваться какА
,+
и+
Отказ Но Python ожидает номер после первого+
оператор. Поэтому он даст синтаксическую ошибку наA ++
, так как второй+
не число.
Точно так же предварительное увеличение ++ A
, будет относиться так:
- Унарный
+
Оператор в Python относится к оператору идентичности. Это просто возвращает целое число после этого. Вот почему это Операция идентичности на целое число - Например, значение
+5
просто5
и за+ -5
это-5
Отказ Это унарный оператор, который работает на реальных числах -
++ A
будет проанализирован как + и+ а
, но второй+ а
снова лечится как(+ а)
, который простоа.
- Поэтому
+ (+ (а))
просто оцениваетА
Отказ
Так что, хотя мы хотели увеличить ценность А
К одному, мы не можем достичь этого, используя ++
Символы, поскольку этот вид оператора не существует.
Поэтому мы должны использовать + =
Оператор, чтобы сделать этот вид приращения.
a += 1 a -= 1
То же самое логику верно для операции по снижению.
Как оценивается?
Вы можете подумать, что, поскольку есть =
Символ, это может быть заявление о назначении.
Однако это не регулярное заявление о назначении. Это называется Увеличенное заявление о назначении Отказ
В регулярном заявлении о назначении правая сторона оценивается в первую очередь, прежде чем это назначить его левой стороне.
# 2 + 3 is evaluated to 5, before assigning to a a = 2 + 3
Однако в этом дополненном заявлении о назначении левая сторона оценивается первой, прежде чем оценивать правую сторону. Это сделано, чтобы обновленное значение можно было записать на левую сторону на месте Отказ
# Reads the value of a, before adding 3 to it in-place a += 3
Это единственный способ для увеличения переменной, не используя заявление о переназначении, как A + 1
Отказ Но здесь, в целом, опция в любом случае не имеет значения, поскольку переводчик оптимизирует код во время выполнения.
Заключение
В этой статье мы узнали о том, как мы можем использовать операцию приращения в Python и почему ++
и -
Операторы не поддерживаются.
Рекомендации
- Stackoverflow вопрос на использование приращения на Python
- Документация Python на выявлениях назначения