Python Glossary English

Python 3.10+astпонятие

ast.MatchValue

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

Образец-значение в case: литерал или имя через точку (case 200, case Color.RED); сравнивается с subject через ==.

Синтаксис

ast.MatchValue(value)

Главная ловушка match: голое имя — не значение. 'case RED:' даёт не MatchValue, а MatchAs — захват, который совпадает с чем угодно и перезаписывает RED; значением имя становится только с точкой, 'case Color.RED:'. None, True и False тоже не MatchValue, а MatchSingleton, потому что сравниваются через is.

Примеры

import ast
src = 'match x:\n    case 200: pass\n    case Color.RED: pass\n    case RED: pass'
cases = ast.parse(src).body[0].cases
print([type(c.pattern).__name__ for c in cases])  # → ['MatchValue', 'MatchValue', 'MatchAs']

См. также

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