Python Glossary English

все Python 3astпонятие

ast.GeneratorExp

выражения

Узел генераторного выражения (x for x in y): elt — вычисляемое выражение, generators — список узлов comprehension.

Синтаксис

ast.GeneratorExp(elt, generators)

Скобки самого генератора в дереве не видны: в sum(x for x in y) GeneratorExp лежит прямо в Call.args, и отличить его от sum((x for x in y)) по дереву нельзя. Несколько for в одном выражении — несколько comprehension в generators, в порядке записи слева направо; if-фильтры живут в comprehension.ifs, а не в GeneratorExp.

Примеры

import ast
call = ast.parse('sum(x * x for x in data if x)', mode='eval').body
gen = call.args[0]
print(type(gen).__name__, type(gen.elt).__name__)  # → GeneratorExp BinOp
print(gen.generators[0].target.id, len(gen.generators[0].ifs))  # → x 1

См. также

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