Python 3.10+astпонятие
ast.MatchSingleton
сопоставление с образцом
Образец case None, case True или case False: value хранит сам объект, а совпадение проверяется через is, а не ==.
Синтаксис
ast.MatchSingleton(value)
Из-за is 'case True:' не совпадает с 1, хотя 1 == True; так же 'case False:' не ловит 0, а 'case 1:' (MatchValue) совпадёт и с True. В поле value лежит Python-объект, а не узел Constant, — в отличие от MatchValue, где value — выражение.
Примеры
import ast
p = ast.parse('match x:\n case None: pass').body[0].cases[0].pattern
print(type(p).__name__, p.value) # → MatchSingleton None
def kind(v):
match v:
case True:
return 'True'
case 1:
return 'one'
return 'other'
print(kind(1), kind(True)) # → one True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности