Python 3.0+astпонятие
ast.Starred
переменные
Узел выражения со звёздочкой *value: распаковка в вызове f(*args), в литерале [*a, *b] и звёздная цель a, *rest = …
Синтаксис
ast.Starred(value, ctx=ast.Load())
Starred покрывает только одну звёздочку: **kwargs в вызове — это keyword с arg=None, а {**d} — ключ None в списке keys узла Dict. В *args параметра функции Starred тоже нет: там поле vararg узла arguments. У Starred есть свой ctx: в цели присваивания он Store, а в вызове Load.
Примеры
import ast
call = ast.parse('f(*args)', mode='eval').body
print(type(call.args[0]).__name__, call.args[0].value.id) # → Starred args
import ast
target = ast.parse('a, *rest = data').body[0].targets[0]
star = target.elts[1]
print(type(star).__name__, star.value.id, type(star.ctx).__name__) # → Starred rest Store
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности