Выражения языка Python: полное руководство с примерами

Раздел: Основы Python -> Операторы и выражения

Общее понятие выражений в Python

Выражением в Python называется конструкция, которая после вычисления возвращает некоторое значение. Это может быть любое сочетание литералов, переменных, вызовов функций и операторов, которое интерпретатор способен свернуть в один объект. Понимание того, как строятся выражения, лежит в основе написания любого кода. Далее рассмотрены основные подходы к созданию выражений, их разновидности и частые проблемы.

Базовый механизм: любое выражение вычисляется до единственного значения

Простейший пример - литерал числа или строки. 5 само по себе является выражением, результатом которого будет число 5. Переменная x тоже выражение, её значение берётся из текущего состояния памяти. Комбинируя литералы, переменные и операторы, получают составные выражения. Например, 2 + 3 * 4 - выражение, которое по правилам приоритета сначала умножит 3 на 4, затем прибавит 2.

# Простейшие выражения
42              # целочисленный литерал
3.14            # вещественный литерал
"Hello"         # строковый литерал
x = 10          # оператор присваивания (сам не выражение, но правая часть = 10 - выражение)
result = x + 5  # составное выражение x + 5

выражения языка python (выражения в python)

Интерпретатор вычисляет выражение и возвращает объект. Если выражение используется в качестве правой части присваивания или аргумента функции, его результат подставляется в нужное место.

Типичная ошибка:

Путаница между операторами сравнения и присваивания. if x = 5: вызовет синтаксическую ошибку, поскольку x = 5 в Python не является выражением (это инструкция). Правильно: if x == 5:.

Как выполнить математические операции в Python?

Арифметические выражения используют операторы +, -, *, /, // (целочисленное деление), % (остаток от деления), ** (возведение в степень).

a = 15
b = 4
print(a + b)   # 19
print(a - b)   # 11
print(a * b)   # 60
print(a / b)   # 3.75
print(a // b)  # 3
print(a % b)   # 3
print(a ** b)  # 50625

значение выражения python (значение выражений в python)

Целочисленное деление и остаток полезны при работе с циклами и делением нацело. Возведение в степень часто применяется в научных расчётах.

Проблема:

Деление на ноль (a / 0) вызывает исключение ZeroDivisionError. Перед делением стоит проверять знаменатель.

Как проверять условия с помощью логических операторов?

Логические выражения возвращают булевы значения True или False. Используются операторы and, or, not.

x = 10
y = 20
print(x > 5 and y < 30)  # True
print(x > 15 or y == 20) # True
print(not x == 10)       # False

операторы языка python (операторы в python)

Логические операторы часто применяются в условных конструкциях (if, while).

Типичная ошибка:

Использование and и or с небулевыми значениями. Python допускает короткое замыкание: 0 and x вернёт 0, а не False, что может привести к неожиданным результатам.

Как сравнивать значения в Python?

Операторы сравнения: == (равно), != (не равно), <, >, <=, >=. Они возвращают True или False.

a = 5
b = '5'
print(a == b)   # False (разные типы)
print(str(a) == b) # True
print(10 > 5)   # True
print(10 <= 9) # False

оператор python примеры (примеры операторов в python)

Сравнения можно объединять в цепочки: 1 < x < 10 эквивалентно 1 < x and x < 10.

Как работать со строками в выражениях?

Строковые выражения включают конкатенацию (+), повторение (*), извлечение символов по индексу и срезы.

s1 = "Hello"
s2 = "World"
print(s1 + " " + s2)  # Hello World
print(s1 * 3)          # HelloHelloHello
print(s1[1:4])         # ell
print(len(s1))         # 5 (выражение-вызов функции)

Строковые выражения широко используются при форматировании вывода и обработке текста.

Проблема:

Конкатенация большого числа строк через + может быть неэффективной. В таких случаях лучше применять метод join или f-строки.

Как записать условие в одной строке (тернарный оператор)?

Тернарное условное выражение имеет вид значение_если_истина if условие else значение_если_ложь.

age = 18
status = "совершеннолетний" if age >= 18 else "несовершеннолетний"
print(status)  # совершеннолетний

Тернарный оператор позволяет компактно выбирать одно из двух значений без полного блока if-else.

Как создать коллекцию на основе выражения (list comprehension)?

Генератор списка (list comprehension) - это выражение, которое создаёт новый список, применяя операцию к каждому элементу итерируемого объекта с возможной фильтрацией.

numbers = [1, 2, 3, 4, 5]
squares = [n ** 2 for n in numbers if n % 2 == 0]
print(squares)  # [4, 16]

Аналогичные выражения существуют для множеств (set comprehension) и словарей (dict comprehension).

Типичная ошибка:

Излишняя вложенность. Сложные comprehension трудно читать, лучше выносить логику в отдельные функции.

Как определить анонимную функцию в выражении (лямбда)?

Лямбда-выражение создаёт безымянную функцию. Синтаксис: lambda аргументы: выражение.

add = lambda a, b: a + b
print(add(3, 4))  # 7

# Использование в filter
nums = [1, 2, 3, 4, 5]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)  # [2, 4]

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

Проблема:

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

Как присвоить значение внутри выражения (walrus operator)?

Оператор моржа (:=) позволяет присваивать значение переменной прямо в выражении и сразу его использовать.

# Без моржа
data = input("Введите число: ")
if data.isdigit():
    print(int(data) * 2)

# С моржом
if (n := input("Введите число: ")).isdigit():
    print(int(n) * 2)

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

Типичная ошибка:

Попытка использовать оператор моржа в старых версиях Python (до 3.8). Также не стоит злоупотреблять им, чтобы не ухудшать читаемость.

Расширенные примеры выражений

В этом разделе представлены более сложные и неочевидные способы использования выражений в Python.

Пример 1. Цепочки сравнений с разными операторами

Пример
x = 7
result = 1 < x < 10 and x % 2 == 0
print(result)  # False (7 нечётное)
False

Цепочка 1 < x < 10 равносильна 1 < x and x < 10. Её можно комбинировать с любыми другими логическими операторами.

Пример 2. Комбинирование тернарного выражения и генератора

Пример
nums = [1, 2, 3, 4, 5, 6]
even_squares = [n ** 2 if n % 2 == 0 else n for n in nums]
print(even_squares)  # [1, 4, 3, 16, 5, 36]
[1, 4, 3, 16, 5, 36]

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

Пример 3. Выражение с моржом и list comprehension

Пример
from math import sqrt
values = [4, 9, 16]
sqrt_values = [root for val in values if (root := sqrt(val)) > 3]
print(sqrt_values)  # [4.0] (только для 16, корень 4.0 > 3)
[4.0]

Оператор моржа позволяет вычислить значение один раз и использовать его и в условии фильтра, и в результирующем списке.

Пример 4. Вложенные тернарные выражения (с осторожностью)

Пример
a, b, c = 5, 10, 15
result = "A больше" if a > b else "B больше" if b > c else "C больше или все равны"
print(result)  # C больше или все равны
C больше или все равны

Тернарные выражения можно вкладывать, но это снижает читаемость. Лучше заменить на if-elif-else.

Пример 5. Арифметическое выражение с использованием модуля math

Пример
import math
angle = math.pi / 4
# Выражение: корень из суммы квадратов синуса и косинуса
result = math.sqrt(math.sin(angle)**2 + math.cos(angle)**2)
print(result)  # 1.0 (основное тригонометрическое тождество)
1.0

Здесь выражение состоит из вызовов функций и арифметических операций, при этом оно всё равно остаётся единым выражением.

Пример 6. Выражение-генератор (не список) для экономии памяти

Пример
gen = (x ** 2 for x in range(1000000) if x % 2 == 0)
# Берём первые 5 значений
import itertools
first_five = list(itertools.islice(gen, 5))
print(first_five)  # [0, 4, 16, 36, 64]
[0, 4, 16, 36, 64]

Выражение-генератор в круглых скобках не создаёт весь список в памяти, а выдаёт элементы по одному. Это эффективно при работе с большими данными.

Пример 7. Условное выражение с коротким замыканием and/or

Пример
name = input("Введите имя: ") or "Гость"
print("Привет, " + name)
Привет, Гость (если ничего не введено)

Выражение input() or "Гость" вернёт строку, введённую пользователем, если она не пустая, иначе "Гость". Это короткая запись для значения по умолчанию.

Выражения в Python - comments

En
выражения языка python (python)