Условные конструкции и сопоставление структурных шаблонов Шпаргалки

Условные конструкции и сопоставление структурных шаблонов

Условные конструкции

if

a = 8
if a > 3:
    print('Ok')
# Ok
if a > 10
    print('Ok')
# 
Однострочная форма if
if a > 3: print('Ok')
# Ok
if a > 3: print('Ok'); print('a > 3')
# Ok
# a > 3

if-else

if a > 10:
    print('Ok')
else:
    print('Not Ok')
# Not Ok
Вложенные условные конструкции
if isinstance(a, (int, float)):
    if a > 0:
        print('Positive')
    else:
        print('Not positive')
else:
    print('NaN')
# Positive
Тренарные операторы
a if a > 0 else 0
# 8
('AM', 'PM')[a >= 12]
Вложенные тренарные операторы
(
    a if a > 0 else
    0 if a < 0 else
    -a
)
# 8

if-elif-else

if a > 8:
    print('Ok')
elif a > 3:
    print('Almost Ok')
else:
    print('Not Ok')
'Almost Ok'

match-case

Паттерны(шаблоны)

Буквальный паттерн (англ. literal)

Это число, строка, булево значение или None.

match value:
    case 0:
        ...
    case "zero":
        ...
    case True:
        ...
Паттерн захвата (англ. capture)

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

match value
    case x:
        print(f'The x is {x}')
    case [a, b]:
        print(a + b)
Подстановочный паттерн (англ. wildcard)

Обозначается нижним подчеркиванием - _. Он подходит к любому субъекту, но не может захватить какие-то переменные субъекта.

value = 'aaa'
match value:
    case 0:
        print('zero')
    case _:
        print('Not a zero')
# Not a zero
Паттерны классов

Используются для доступа к аттрибутам класса.

match frame
    case LeftFrame(size, color="orange"):
        ...
Комбинированные паттерны

Вертикальная черта | эквивалентна or.

match n
    case (0 | 1):
        ...

Страж (англ. guard)

Условное выражение, позволяющее выполнить блок кода только если оно возвращает True.

match value
    case [x, *rest] if x == 0:
        ...
    case [x, *rest] if x > 0:
        ...
    case _:
        ...

Стражи недопустимы во вложенных паттернах.

Практический Python для начинающих
Практический Python для начинающих

Станьте junior Python программистом за 7 месяцев

 7 месяцев

Возможно будет интересно

Операторы в Python Шпаргалки
Новичок
Операторы в Python

Шпаргалка по арифметическим и условным операторам в Python

2022-11-09
Шпаргалка по индексам и срезам Шпаргалки
Новичок
Шпаргалка по индексам и срезам

Шпаргалка по индексам и срезам в Python

2022-11-10
Шпаргалка по модулю itertools Шпаргалки
Продвинутый
Шпаргалка по модулю itertools

Шпаргалка по всем функциям модуля itertools, создающим разнообразные итераторы.

2022-10-28