Python Glossary English

Python 3.10+astпонятие

ast.Match

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

Узел инструкции match: subject — сопоставляемое выражение, cases — список узлов match_case с образцом, guard и телом.

Синтаксис

ast.Match(subject, cases)

Образцы в case — не выражения: они строятся из отдельной иерархии ast.pattern (MatchValue, MatchAs, MatchClass…), и обходчик, знающий только expr, их пропустит. Условие 'if' после образца лежит в match_case.guard обычным выражением. Слова match и case — мягкие ключевые: переменная match = 1 по-прежнему законна и даёт Assign.

Примеры

import ast
src = 'match cmd:\n    case ["go", d] if d:\n        pass\n    case _:\n        pass'
m = ast.parse(src).body[0]
print(type(m).__name__, m.subject.id, len(m.cases))  # → Match cmd 2
c = m.cases[0]
print(type(c.pattern).__name__, c.guard.id)  # → MatchSequence d
print(type(ast.parse('match = 1').body[0]).__name__)  # → Assign

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности