Операторы в Python

Содержание

  1. Введение в операторы
  2. Арифметические операторы
  3. Операторы сравнения
  4. Операторы присваивания
  5. Логические операторы
  6. Операторы идентичности
  7. Операторы принадлежности
  8. Битовые операторы
  9. Приоритет операторов
  10. Примеры

Введение в операторы

Операторы — это специальные символы или ключевые слова, которые выполняют операции над операндами (переменными, значениями). В Python операторы делятся на несколько категорий

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

Используются для выполнения математических операций над числами

ОператорНазваниеОписание
+СложениеСкладывает два операнда
-ВычитаниеВычитает правый операнд из левого
*УмножениеУмножает два операнда
/ДелениеВещественное деление (в ответе не целые числа)
//Целочисленное делениеЦелое деление (в ответе целые числа)
%Остаток от деленияВозвращает остаток от деления
**Возведение в степеньВозводит левый операнд в степень правого

Примеры


a = 17
b = 4

print("Сложение:", a + b) # 23
print("Вычитание:", a - b) # 13
print("Умножение:", a * b) # 68 
print("Деление:", a / b) # 4.25
print("Целочисленное деление:", a // b) # 4 
print("Остаток от деления:", a % b) # 1 
print("Возведение в степень:", a ** b) # 83521

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

Сравнивают два значения и возвращают True или False

ОператорНазваниеОписание
==РавноПроверяет равенство значений
!=Не равноПроверяет неравенство значений
>БольшеПроверяет, больше ли левый операнд
<МеньшеПроверяет, меньше ли левый операнд
>=Больше или равноПроверяет, больше или равен левый операнд
<=Меньше или равноПроверяет, меньше или равен левый операнд

Примеры


# Сравнение чисел
x = 10 
y = 5 
z = 10 
print(x == y) # False 
print(x != y) # True 
print(x > y) # True 
print(x < y) # False 
print(x >= z) # True 
print(x <= z) # True 

# Сравнение строк (лексиграфическое)
str1 = "apple" 
str2 = "banana" 
print("Сравнение строк:", str1 < str2) 
# True
# a в unicode - 97
# b в unicode - 98
# 97 < 98, поэтому сразу определяется, что "apple" < "banana" — True.
# Дальнейшие символы не проверяются, так как отличие уже найдено.

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

Присваивают значения переменным

ОператорПримерЭквивалентОписание
=x = 5x = 5Простое присваивание
+=x += 3x = x + 3Добавление с присваиванием
-=x -= 2x = x - 2Вычитание с присваиванием
*=x *= 4x = x * 4Умножение с присваиванием
/=x /= 2x = x / 2Деление с присваиванием
//=x //= 3x = x // 3Целочисленное деление с присв.
%=x %= 3x = x % 3Остаток от деления с присв.
**=x **= 2x = x ** 2Возведение в степень с присв.

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

Работают с булевыми значениями (True/False)

ОператорНазваниеОписание
andИTrue, если оба операнда True
orИЛИTrue, если хотя бы один операнд True
notНЕИнвертирует значение

Примеры


print(True and True) # True 
print(True and False) # False 
print(False and False) # False 
print(True or True) # True 
print(True or False) # True 
print(False or False) # False 
print(not True) # False 
print(not False) # True 

# пример с переменными 
age = 25 
has_license = True 

can_drive = age >= 18 and has_license 
print(f"Может ли водить машину: {can_drive}") # True

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

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

ОператорНазваниеОписание
isЭтоTrue, если оба объекта одинаковые
is notНе этоTrue, если объекты разные

Примеры


# Для простых типов (интернирование) 
a = 256 
b = 256 
print(a is b) # True (Python кэширует маленькие целые числа) 

# Для списков (разные объекты) 
list1 = [1, 2, 3] 
list2 = [1, 2, 3] 
list3 = list1 
print(list1 is list2) # False (разные объекты) 
print(list1 is list3) # True (один и тот же объект) 
print(list1 == list2) # True (содержимое одинаковое) 

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

Проверяют наличие элемента в последовательности.

ОператорНазваниеОписание
inВходит вTrue, если элемент в последовательности
not inНе входит вTrue, если элемента нет в последовательности

Примеры


# Проверка в строках 
text = "Hello, World!" 
print('Hello' in text) # True 
print('Python' in text) # False 
print('World' not in text) # False 

# Проверка в списках 
fruits = ['apple', 'banana', 'orange', 'grape'] 
print('banana' in fruits) # True 
print('mango' in fruits) # False 
print('pear' not in fruits) # True 

# Проверка в словарях (проверяет ключи) 
person = {'name': 'Alice', 'age': 30, 'city': 'Moscow'} 
print('name' in person) # True 
print('Alice' in person) # False (проверяет ключи, не значения) 
print('age' not in person) # False 

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

Работают с числами на уровне битов (двоичного представления).

ОператорНазваниеОписание
&И (AND)Побитовое И
|ИЛИ (OR)Побитовое ИЛИ
^XORИсключающее ИЛИ
~НЕ (NOT)Побитовое отрицание
<<Сдвиг влевоСдвиг битов влево
>>Сдвиг вправоСдвиг битов вправо

Примеры


a = 10 # 1010 в двоичной 
b = 4 # 0100 в двоичной

# Побитовое И (AND) 
print(a & b) # 1010 & 0100 = 0000 (0) 

# Побитовое ИЛИ (OR) 
print(a | b) # 1010 | 0100 = 1110 (14) 

# Побитовое исключающее ИЛИ (XOR) 
print(a ^ b) # 1010 ^ 0100 = 1110 (14) 

# Побитовое НЕ (NOT) 
print(~a)
# для примера 8 бит
# 0000 1010
# после инверта 1111 0101
# старший бит 1 из-за этого число отриц-ое
# Чтобы узнать его значение в десятичной системе:
# Инвертируем все биты обратно: 0000 1010
# Добавляем 1: 0000 1011
# Ставим знак минус: -11

# Сдвиг влево 
print(a << 1) # 1010 << 1 = 10100 (20) 
print(a << 2) # 1010 << 2 = 101000 (40) 

# Сдвиг вправо 
print(a >> 1) # 1010 >> 1 = 0101 (5) 
print(a >> 2) # 1010 >> 2 = 0010 (2) 

Приоритет операторов при выполнении операций:

  1. () — скобки (группировка) — ВЫСШИЙ
  2. ** — возведение в степень
  3. +x, -x, ~x — унарные плюс, минус, побитовое НЕ
  4. *, /, //, % — умножение, деление, целочисленное деление, остаток
  5. +, - — сложение, вычитание
  6. <<, >> — битовые сдвиги
  7. & — побитовое И
  8. ^ — побитовое исключающее ИЛИ
  9. | — побитовое ИЛИ
  10. ==, !=, >, <, >=, <=, is, is not, in, not in — сравнение, идентичность, принадлежность
  11. not — логическое НЕ
  12. and — логическое И
  13. or — логическое ИЛИ
  14. = и другие операторы присваивания — НИЗШИЙ

Примеры


# Пример с разным приоритетом 
result1 = 2 + 3 * 4 ** 2 / 8 - 1
# Порядок вычислений: 
# 1. 4 ** 2 = 16 
# 2. 3 * 16 = 48 
# 3. 48 / 8 = 6.0 
# 4. 2 + 6.0 = 8.0 
# 5. 8.0 - 1 = 7.0 

print(result1) # 7.0 

# Использование скобок для изменения порядка 
result2 = (2 + 3) * (4 ** 2) / (8 - 1) 
# 1. (2 + 3) = 5 
# 2. (4 ** 2) = 16 
# 3. (8 - 1) = 7 
# 4. 5 * 16 = 80 
# 5. 80 / 7 ≈ 11.4286 
print(result2:.4f) # 11.4286

# Смешанные операторы 
a, b, c = 5, 3, 2 
result3 = not a > b and c != 0 or b == 3 

# Порядок вычислений: 
# 1. a > b = 5 > 3 = True 
# 2. not True = False 
# 3. c != 0 = 2 != 0 = True 
# 4. False and True = False 
# 5. b == 3 = 3 == 3 = True 
# 6. False or True = True 

print(result3) # True