присваивается переменной с левой стороны.
Проще думать об этом так.
1. Вычитаем 3 из а.
2. Присваиваем результат этого вычитания временной переменной.
3. Присваиваем значение временной переменной а:
>>>> a = 95
>>>> temp = a — 3
>>>> a = temp
Поэтому, когда вы говорите:
>>>> a = a — 3
Python рассчитывает результат операции вычитания с правой стороны от знака =, запоминает результат, а затем присваивает его переменной а, которая находится с левой стороны. Это гораздо быстрее и приятнее глазу, чем использование временной переменной.
Вы можете совместить арифметические операторы с присваиванием, размещая оператор перед знаком =. В этом примере выражение а — = 3 аналогично выражению а = а — 3:
>>>> a = 95
>>>> a — = 3
>>>> a
>92
Это выражение аналогично выражению а = а + 8:
>>>> a += 8
>>>> a
>100
А это — выражению а = а * 2:
>>>> a *= 2
>>>> a
>200
Здесь представлен пример деления с плавающей точкой, а = а / 3:
>>>> a /= 3
>>>> a
>66.66666666666667
Присвоим значение 13 переменной а, а затем попробуем использовать сокращенный вариант а = а // 4 (целочисленное деление):
>>>> a = 13
>>>> a //= 4
>>>> a
>3
Символ % имеет несколько разных применений в Python. Когда он находится между двух чисел, с его помощью вычисляется остаток от деления первого числа на второе:
>>>> 9 % 5
>4
Вот так можно получить частное и остаток одновременно:
>>>> divmod(9,5)
>(1, 4)
В противном случае вам пришлось бы считать их по отдельности:
>>>> 9 // 5
>1
>>>> 9 % 5
>4
Только что вы увидели кое-что новое: функцию с именем divmod, в которую передаются целые числа 9 и 5, возвращающую двухэлементный результат, называемый кортежем. С кортежами вы познакомитесь в главе 3, а с функциями — в главе 4.
Рассмотрим, что получится, если ввести следующее:
>>>> 2 + 3 * 4
Если выполнить сложение первым, 2 + 3 равно 5, а 5 * 4 равно 20. Но если выполнить первым умножение, 3 * 4 равно 12, а 2 + 12 равно 14. В Python, как и в большинстве других языков, умножение имеет больший приоритет, нежели сложение, поэтому вы увидите ответ, совпадающий со второй версией:
>>>> 2 + 3 * 4
>14
Как узнать приоритет той или иной операции? В приложении Е приводится огромная таблица, в которой перечислены все приоритеты, но я обнаружил, что на практике никогда не смотрю в эти правила. Гораздо проще добавить пару скобок, чтобы сгруппировать код и вычисления так, как нужно:
>>>> 2 + (3 * 4)
>14
Это поможет любому человеку, читающему код, точно определить его предназначение.