Python Glossary English

Python 3.10+astпонятие

ast.match_case

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

Узел одной ветки case в инструкции match. Поля: pattern — образец, guard — условие после if или None, body — список инструкций. С 3.10.

Синтаксис

ast.match_case(pattern, guard=None, body)

Условие case x if x > 0 хранится в guard отдельно от образца, а образец — pattern, а не выражение. У match_case нет своих lineno/col_offset: позицию ветки берут у pattern или первой инструкции body. Ветки лежат в Match.cases по порядку, и порядок значим — первая совпавшая побеждает.

Примеры

import ast
src = 'match n:\n    case x if x > 0:\n        pass\n    case 0:\n        pass'
for case in ast.parse(src).body[0].cases:
    guard = ast.unparse(case.guard) if case.guard else None
    print(type(case.pattern).__name__, guard)  # → MatchAs x > 0 / MatchValue None
print(hasattr(case, 'lineno'))  # → False

См. также

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