Python Glossary English

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Сообщить о неточности