все Python 3astпонятие
ast.List
литералы
Узел списка [a, b, c]: elts — элементы, ctx — Load при чтении или Store, когда список стоит слева от '='.
Синтаксис
ast.List(elts, ctx)
Один и тот же синтаксис [a, b] даёт List с ctx=Store в '[a, b] = pair' и с ctx=Load в 'print([a, b])' — анализатор, ищущий «создание списка», должен смотреть на ctx. Списковое включение — другой узел, ListComp, а '[1] * 3' — BinOp с List внутри. Константный список не сворачивается в Constant: [1, 2] остаётся List из двух Constant.
Примеры
import ast
node = ast.parse('[1, x]', mode='eval').body
print(type(node).__name__, [type(e).__name__ for e in node.elts]) # → List ['Constant', 'Name']
target = ast.parse('[a, b] = pair').body[0].targets[0]
print(type(target).__name__, type(target.ctx).__name__) # → List Store
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности