Операторы

Арифметические операторы

  • Оператор сложения (+)

    4 + 5 # 9
  • Оператор вычетания (-)

    4 - 5 # -1
  • Оператор умножения (*)

    4 * 5 # 20
  • Оператор деления (/)

    Интересным фактом с оператором деления является то, что возвращаемое значение меняет тип на float, даже если операндами были значения типа int

    20 / 4 # 5.0
  • Оператор получения остатка от деления (%)

    21 % 4 # 1
    22 % 4 # 2
  • Оператор получения целого от деления (//)

    21 // 4 # 5
    26 // 4 # 6
  • Оператор возведения в степень (//)

    4 ** 5 # 1024

Операторы присваивания

  • =

    var = 5 # присвоили перемеменной 'var' значение 5
  • Присвоение с сложением +=

    var = 5 # 5
    var += 1 # 6
    var = var + 1 # 7
  • Присвоение с вычитанием +=

    var = 5 # 5
    var -= 1 # 4
    var = var - 1 # 3
  • Присвоение с умножением *=

    var = 5 # 5
    var *= 2 # 10
    var = var * 2 # 20
  • Присвоение с делением /=

    var = 6 # 5
    var /= 2 # 3.0
    var = var / 2 # 1.0
  • Присвоение с остатком от деления /=

    var = 5 # 5
    var %= 2 # 1
    var = var % 2 # 1

Надеюсь что на этом месте суть ясна.. И дальше не стоит продолжать с операторами присваивания

Операторы сравнения

Операторы сравнения возвращают значение типа bool

# равность (equal)
5 == 6 # False
False == 0 # True
# неравность (not equal)
5 != 6 # True
False != 0 # False
# Больше чем (Greater than)
5 > 5 # False
5 > 4 # True
# Меньше чем (Greater than)
4 < 5 # True
4 < 4 # False
# Больше или равно
4 >= 4 # True
# Меньше или равно
4 <= 4 # True

Логические операторы

C логическими операторами немного сложнее чем кажется на первый взгляд, и вы скорее всего об этом не знали, логические операторы or и end в Python не возвращают bool они возвращают значение одного из операндов. Это важно запомнить!

  • Логическое ИЛИ (or)

    Возвращает значение того операнда который равен True(либо неявно приводится к нему).

    print(0 or 1) # выведет 1 в консоль
  • Логическое И (and) Возвращает значение того операнда который равен False(либо неявно приводится к нему).

    print(0 and 1) # выведет 0 в консоль

    Либо если операнды равны True - вернется второй операнд

    print(1 and 2 and 3 and 4) # что выведет в консоль?
  • Логическое отрицание (not) Полученое значение приводит к bool если требуется и возвращает отрицание.

    not True # False
    not 0 # True
    not [] # True
    not False # True
    not [1] # # False

Идентификационные операторы

Эти операторы не проверяют эквивалентность(равность операндов), они проверяют является ли объект в левом операнде тем же объектом в правом.

True is True # True
"A" is "A" # True

Что значит подсвеченная строчка в примере выше? А это значит что объявление строк через литералы в Python кешируются. Давайте напишем по другому, не будем использовать строчные литералы, а сгенерируем строчки программно.

chars_list = ["a", "b", "c"]
str1 = "".join(chars_list)
str2 = "".join(chars_list)
print(str1 is str2) # False

Есть 2 идентификационных оператора в Python: is not is

Операторы принадлежности

С помощью оператора in и его "антогониста" not in мы можем проверить принадлежность какого-то значения к последовательности(list, set...)

my_awesome_list = [1,2,3]
print(1 in my_awesome_list) # True
print('1' in my_awesome_list) # False

Строка в Python тоже последовательность(sequence), последовательность байт либо символов, а значит мы можем так же искать подстроки в строках:

print("ab" in "abracadabra") # True
print("ba" in "abracadabra") # False

Итого у нас 2 оператора принадлежности:

  • in
  • not in

Битовые операторы

!!!Это тему я расскою чуть позже, а пока мы перечислим их и посмотрим на результаты их применения

  • Побитовый AND (&):

    0,1,0,0,1
    0,1,0,0,0
    --------- &
    0,1,0,0,0 = 8
  • Побитовый OR (|):

    0,1,0,0,1
    0,1,0,0,0
    --------- |
    0,1,0,0,1 = 9
  • Побитовый XOR (^):

    0,1,0,0,1
    0,1,0,0,0
    --------- ^
    0,0,0,0,1 = 1
  • Побитовый NOT (~)

    0,1,0,0,1
    --------- ~
    1,0,1,1,0 = 22
  • Здвиг влево (<<)

    0,0,0,0,1
    --------- << 3
    0,1,0,0,0 = 8
  • Здвиг вправо (<<)

    0,0,0,0,1
    --------- >> 3
    0,0,0,0,0 = 0

Может доведется и я покажу как можно работать с битовыми масками