Python Glossary English

Python 3.10+astпонятие

ast.MatchStar

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

Образец *name внутри последовательности в case: забирает остаток элементов списком; у *_ поле name равно None.

Синтаксис

ast.MatchStar(name)

Встречается только внутри MatchSequence и не больше одного раза на образец. Захваченный остаток — всегда list, даже если сопоставлялся кортеж. '*_' пропускает элементы без привязки имени: name=None, и переменная _ не создаётся. Двойная звёздочка в словарном образце — не MatchStar, а поле rest у MatchMapping.

Примеры

import ast
p = ast.parse('match x:\n    case [h, *t]: pass\n    case [*_]: pass').body[0]
print([q.name for q in p.cases[0].pattern.patterns])  # → ['h', 't']
print(p.cases[1].pattern.patterns[0].name)  # → None
match (1, 2, 3):
    case (first, *rest):
        print(first, rest)  # → 1 [2, 3]

См. также

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