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Сообщить о неточности