2022-11-09
          
        
                #python
              
            
          Условные конструкции и сопоставление структурных шаблонов
Условные конструкции
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 _:
        ...
Стражи недопустимы во вложенных паттернах.
Возможно будет интересно
2022-11-09
  Продвинутый
    
      Шпаргалка по модулю itertools
Шпаргалка по всем функциям модуля itertools, создающим разнообразные итераторы.
2022-10-28