Основы 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 — локальная установка не требуется.
Все уроки этого курса
- Основы match и case
- Сопоставление последовательностей и отображений
- Шаблоны классов
- Защитные условия и подстановочные шаблоны