все Python 3astпонятие
ast.comprehension
выражения
Узел одной части for ... in ... [if ...] внутри списочного, множественного, словарного или генераторного выражения. Поля: target, iter, ifs, is_async.
Синтаксис
ast.comprehension(target, iter, ifs, is_async)
Несколько for в одном выражении — несколько comprehension в списке generators, по порядку слева направо, а все if после каждого for собираются в его ifs. is_async — целое 0 или 1, а не bool. У comprehension нет позиций lineno: их берут у родительского ListComp/GeneratorExp.
Примеры
import ast
comp = ast.parse('[x * y for x in a if x for y in b if y if y > x]', mode='eval').body
for g in comp.generators:
print(ast.unparse(g.target), ast.unparse(g.iter), len(g.ifs), g.is_async)
# → x a 1 0 / y b 2 0
print(hasattr(comp.generators[0], 'lineno')) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности