Операторы
Что такое оператор, операнд?
подробнее
Оператор - это символ или зарезервированное слово, которое выполняет какое-то действие (операцию). Это «глагол» в коде.
Операнд - это данные, над которыми выполняется действие. Это «существительное».
Примечание:
В Python почти все операторы — это “синтаксический сахар”. Когда ты пишешь
a + b, Python на самом деле вызывает магический методa.__add__(b).
Пример:
x + 5+— это оператор (сложение).xи5— это операнды.
Классификация
- По количеству операндов:
- Унарные: один операнд (например,
-x— меняет знак). - Бинарные: два операнда (
a > b,x * y). - Тернарный: три операнда (
A if condition else B).
- Унарные: один операнд (например,
- По типу действия:
- Арифметические:
+,-,*,/,//(целочисленное),%(остаток),**(степень). - Сравнения:
==,!=,>,<,>=,<=. - Логические:
and,or,not. - Присваивания:
=,+=,-=и т.д. - Побитовые:
&(and),|(or),^(xor),~(not),<<,>>.
- Арифметические:
Что такое литерал?
подробнее
Литерал - это запись в коде, которая представляет собой фиксированное значение «как оно есть», а не имя переменной.
Пример:x = 5,x- это переменная, а5- литерал.
Виды литералов в python:
- Числовые:
10(int),3.14(float),1j(complex). - Строковые:
'Hello',"World","""Многострочный текст""". - Логические:
True,False. - Специальный:
None. - Контейнерные (коллекции):
[]— пустой list (литерал списка).{}— пустой dict (литерал словаря).()— пустой tuple (литерал кортежа).{1, 2}— set (литерал множества).
Чем == отличается от is
подробнее
== (оператор равенства)
- Сравнивает
значенияобъектов - Возвращает
True, если содержимое объектов одинаковое - Может быть переопределён в классах через метод
__eq__
is (оператор идентичности)
- Сравнивает
ссылкина объект - Возвращает
True, только если это один объект - Эквивалентно проверке
id(a) == id(b) - Часто
isиспользуется для сравнения сNone - Числа и строки в современном python кешируются из-за этого сравнение строк и чисел с одинаковым значением выдадут
True
# Пример кеширования
a, b = 123, 123
print(a is b) # True
c, d = 'abc', 'abc'
print(c is d) # True
Как работают and, or, not операторы?
подробнее
Эти операторы являются логическими операторами в Python и используются для выполнения логических операций.
Оператор and
- Возвращает
True, если оба операнда истинны. - Если первый операнд ложный, возвращает его и не проверяет второй (short-circuit evaluation).
- Если первый операнд истинный, возвращает второй операнд.
Оператор or
- Возвращает
True, если хотя бы один операнд истинен. - Если первый операнд истинный, возвращает его и не проверяет второй (short-circuit evaluation).
- Если первый операнд ложный, возвращает второй операнд.
Оператор not
- Унарный оператор, который инвертирует логическое значение.
- Всегда возвращает
TrueилиFalse.
Что такое тернарный оператор?
подробнее
Тернарный оператор - это способ записать простое условие if-else в одну строку.
Пример:
# обычный if-else:
if x % 2 == 0:
status = "Четное"
else:
status = "Нечетное"
# тернарный аналог:
status = "Четное" if x % 2 == 0 else "Нечетное"
Тернарный оператор с elif
Прямого ключевого слова
elifв тернарном операторе не существует.
Логикуelifможно имитировать через вложенность.
Пример:
# обычный if-elif-else:
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
else:
grade = "C"
# тернарный аналог:
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
Использование круглых скобок
подробнее
-
Группировка и приоритет (Math)
Скобки меняют порядок выполнения операций. То, что в скобках, вычисляется первым.result = (2 + 3) * 4 # 20 (без скобок было бы 14) -
Неявный перенос строк (Implicit Line Joining)
Это предпочтительный способ разбивать длинные выражения по PEP 8 вместо использования обратного слеша\. Внутри скобок Python «ждет» закрытия, поэтому перенос строки не обрывает код.-
Для длинных условий:
if (connection_is_active and user_has_permissions and not resource_is_locked): ... -
Для длинных строк (конкатенация):
text = ( "Это очень длинная строка, " "которую мы разбили на части " "без использования плюсов." )
-
- Вызов (Callable)
Скобки после имени объекта — это команда «выполнись».- Функции/Методы:
print(),my_func(arg) - Классы (инстанцирование):
user = User()- вызывает__new__()и__init__(). - Любой объект с методом
__call__(): Если у объекта есть этот магический метод, его можно «вызвать» как функцию:my_obj().
- Функции/Методы:
- Скобки в кортежах (Tuple)
Сами по себе скобки не создают кортеж (кроме пустого()). Кортеж создает запятая.(1)— это просто числоintв скобках.(1,)— это кортеж из одного элемента.1,- тоже кортеж из одного элемента