0Pricing
Python Academy · Урок

Основы match и case

Выполняйте ветвление по шаблонам значений

«Основы match и case» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Структурное сопоставление с образцом

В Python 3.10 появилось структурное сопоставление с образцом с помощью инструкции match. Она сравнивает значение с последовательностью шаблонов и выполняет первый подходящий, что гораздо мощнее цепочек if/elif.

Базовый синтаксис

Запишите match, затем проверяемое значение и один или несколько блоков case. Выполняется первый подходящий вариант.

command = 'start'

match command:
    case 'start':
        print('Starting up')
    case 'stop':
        print('Shutting down')

# prints: Starting up

Сопоставление с литералами

Самые простые шаблоны — это литеральные значения: числа, строки, True, False и None. Они подходят, когда проверяемое значение равно литералу.

code = 404

match code:
    case 200:
        print('OK')
    case 404:
        print('Not Found')
    case 500:
        print('Server Error')

Подстановочный шаблон _

Символ подчёркивания _ — это подстановочный шаблон, подходящий к чему угодно. Помещайте его последним как вариант по умолчанию, подобно else.

code = 418

match code:
    case 200:
        print('OK')
    case _:
        print('Unknown status')

Сочетание с OR

Используйте оператор | внутри варианта, чтобы сопоставить любое из нескольких шаблонов.

code = 301

match code:
    case 200 | 201 | 204:
        print('Success')
    case 301 | 302:
        print('Redirect')
    case _:
        print('Other')

Захват значения

Простое имя в шаблоне захватывает проверяемое значение в эту переменную. Используйте его, если шаблон подходит ко всему, но само значение всё ещё нужно получить.

value = 42

match value:
    case 0:
        print('zero')
    case other:
        print('got', other)

Порядок имеет значение

Варианты проверяются сверху вниз, и побеждает первое совпадение. Слишком рано размещённый широкий шаблон захвата скроет последующие, более конкретные варианты.

x = 5

match x:
    case n:           # matches everything first!
        print('caught by capture')
    case 5:
        print('this never runs')

Сопоставление ничего не возвращает

match — это инструкция, а не выражение, поэтому она не возвращает значение. Если нужен результат, задайте переменную внутри вариантов.

day = 6
label = ''

match day:
    case 0 | 6:
        label = 'weekend'
    case _:
        label = 'weekday'

print(label)

Сопоставление с None

С None можно сопоставляться напрямую. Это понятнее, чем отдельная проверка is None внутри цепочки.

def describe(value):
    match value:
        case None:
            return 'nothing'
        case _:
            return 'something: ' + str(value)

print(describe(None))
print(describe(7))

Практический диспетчер

Структурное сопоставление особенно полезно для диспетчеризации команд: длинная цепочка if превращается в понятную таблицу вариантов.

def handle(cmd):
    match cmd:
        case 'help':
            return 'Showing help'
        case 'quit' | 'exit':
            return 'Goodbye'
        case _:
            return 'Unknown command'

print(handle('exit'))
print(handle('foo'))

Сопоставление с True, False и None

Константы True, False и None сопоставляются по идентичности, а не по равенству. Благодаря этому они надёжно подходят для выбора ветви.

def report(flag):
    match flag:
        case True:
            return 'enabled'
        case False:
            return 'disabled'
        case None:
            return 'unset'

print(report(True))
print(report(None))

Быстрая проверка

Что делает подстановочный шаблон _ в инструкции сопоставления?

Итоги

Вы научились выбирать ветви по шаблонам значений.

  • match проверяет варианты сверху вниз; побеждает первое совпадение.
  • Сопоставляйте литералы, используйте _ как универсальный шаблон и объединяйте шаблоны с помощью |.
  • Простое имя захватывает значение.
  • match — это инструкция, а не выражение.

Часто задаваемые вопросы

Урок «Основы match и case» бесплатный?

Да — полный текст урока «Основы match и case» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы match и case»?

Выполняйте ветвление по шаблонам значений Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы match и case»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы match и case
  2. Сопоставление последовательностей и отображений
  3. Шаблоны классов
  4. Защитные условия и подстановочные шаблоны
← Назад к Python Academy