Python 3.10+astпонятие
ast.MatchMapping
сопоставление с образцом
Словарный образец case {'k': v, **rest}: keys — ключи-выражения, patterns — образцы значений, rest — имя для остатка или None.
Синтаксис
ast.MatchMapping(keys, patterns, rest)
В отличие от последовательности, словарный образец не требует точного совпадения: 'case {"x": x}' ловит словарь и с лишними ключами. Остаток '**rest' — не узел, а строка в поле rest. Ключом может быть только литерал или имя через точку, и он ищется через get, так что defaultdict новых ключей при сопоставлении не создаёт.
Примеры
import ast
p = ast.parse('match x:\n case {"id": i, **rest}: pass').body[0].cases[0].pattern
print(type(p).__name__, [k.value for k in p.keys], p.rest) # → MatchMapping ['id'] rest
match {'id': 7, 'extra': 1}:
case {'id': i}:
print('id', i) # → id 7
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности