Hardmatchpython310
Что такое структурное сопоставление (match/case)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Structural pattern matching (Python 3.10, PEP 634) — switch/case-подобный синтаксис с мощными patterns. Аналог switch в Java 17+, Rust match, Scala.
match command:
case 'quit':
exit()
case 'go' | 'move': # OR
move()
case ['click', x, y]: # sequence — destructuring
click(x, y)
case {'type': 'circle', 'radius': r}: # mapping
area = 3.14 * r ** 2
case Point(x=0, y=0): # class pattern
print('origin')
case Point(x=0, y=y):
print(f'on Y axis at {y}')
case x if x > 0: # guard
print(f'positive: {x}')
case _: # wildcard (default)
print('unknown')Patterns:
- literal (
1,'str'), capture (variable binds value), wildcard (_); - sequence (
[x, y, *rest]), mapping ({'key': value}); - class (
Point(0, y=0)— использует__match_args__); - guard (
case x if x > 0), as (case [1, 2] as pair).
Полезно для парсинга AST, обработки command responses, state machines.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.