Python Glossary English

Python 3.10+astпонятие

ast.pattern

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

Абстрактный базовый класс образцов в match/case: MatchValue, MatchAs, MatchClass, MatchSequence и других. Поле pattern у match_case. С 3.10.

Синтаксис

isinstance(case.pattern, ast.pattern)

Образцы — не выражения: case [x, y] даёт MatchSequence, а не List, и case x — MatchAs с захватом имени, а не Name. Поэтому поиск ast.Name по коду с match не найдёт переменных, которые связываются образцом. Шаблон-подстановка _ — MatchAs с name=None и pattern=None.

Примеры

import ast
src = 'match p:\n    case [x, y]:\n        pass\n    case _:\n        pass'
for case in ast.parse(src).body[0].cases:
    pat = case.pattern
    print(type(pat).__name__, isinstance(pat, ast.pattern))
# → MatchSequence True / MatchAs True

См. также

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