Python Schoolby trefilov
Шаг 1 из 3+90 XP

Повторение и приёмы

Краткое повторение базы плюс полезные приёмы.

Три приёма, которые делают код короче и читаемее

1. Тернарное выражение a if cond else b

Если тебе нужно выбрать одно из двух значений по условию, не обязательно писать полноценный if/else. Можно записать в одну строку:

status = "ok" if x > 0 else "no"

Читается слева направо: «возьми "ok", если x > 0, иначе "no"». Это не оператор и не функция — это выражение, у которого есть значение, поэтому его можно присваивать переменной или подставлять куда угодно.

👍 Используй для простого выбора: "да" if ok else "нет".
👎 Не вкладывай тернарные друг в друга — становится нечитаемо. Лучше обычный if/elif/else.

2. Распаковка с * (звёздочкой)

Когда у тебя список, можно сразу разобрать его на части:

a, *rest, last = [1, 2, 3, 4, 5]

a = 1

rest = [2, 3, 4]

last = 5

*rest означает «всё остальное, что не вошло в именованные переменные». Звёздочка может стоять только у одной переменной в распаковке. Удобно когда нужны первый/последний и «всё, что между».

first, *rest = [10, 20, 30, 40]   # first=10, rest=[20,30,40]
*head, last  = [10, 20, 30, 40]   # head=[10,20,30], last=40

3. Walrus := — присвоить-и-вернуть (Python 3.8+)

Оператор «моржа» вычисляет выражение, сохраняет его в переменную, и тут же возвращает значение, чтобы его можно было использовать дальше:

if (n := len(s)) > 10:
    print(n)

Это эквивалентно двум строкам:

n = len(s)
if n > 10:
    print(n)

👍 Используй когда без него пришлось бы вычислять одно и то же дважды (например, длину строки и в условии, и в ветке).
👎 Не злоупотребляй — обычный = чаще читается лучше.