Python 3.10+astпонятие
ast.MatchSequence
сопоставление с образцом
Образец-последовательность case [a, b] или case (a, b): patterns — образцы элементов, один из них может быть MatchStar.
Синтаксис
ast.MatchSequence(patterns)
Квадратные и круглые скобки дают одинаковый узел и одинаково совпадают с list и tuple — 'case (a, b)' поймает и [1, 2]. Строки, bytes и bytearray под образец-последовательность не подходят никогда, хотя это последовательности: 'case [a, b]' не совпадёт с 'ab'. Без * длина должна совпасть точно.
Примеры
import ast
p = ast.parse('match x:\n case (a, *rest): pass').body[0].cases[0].pattern
print(type(p).__name__, [type(q).__name__ for q in p.patterns]) # → MatchSequence ['MatchAs', 'MatchStar']
def f(v):
match v:
case (a, b):
return 'pair'
return 'no'
print(f([1, 2]), f('ab')) # → pair no
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности