Простой Python. Современный стиль программирования (Любанович) - страница 21

присваивается переменной с левой стороны.

Проще думать об этом так.

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

Это поможет любому человеку, читающему код, точно определить его предназначение.

Системы счисления

Предполагается, что целые числа указываются в десятичной системе счисления, если только вы не укажете какую-либо другую. Вам может никогда не понадобиться использовать другие системы счисления, но иногда они будут встречаться в коде.