все Python 3astпонятие
ast.For
управление потоком
Узел цикла for: цель target, итерируемое iter, тело body, ветка else в orelse и type_comment.
Синтаксис
ast.For(target, iter, body, orelse, type_comment=None)
Ветка else цикла лежит в orelse и исполняется, если цикл не прервали break, — пустой список значит, что else нет. Цель с распаковкой for i, x in … — Tuple с контекстом Store. Цикл в async def с async for — другой класс, AsyncFor, и visit_For его не увидит; генераторы списков тоже не For, а comprehension внутри ListComp.
Примеры
import ast
src = 'for i, x in enumerate(s):\n pass\nelse:\n done()'
node = ast.parse(src).body[0]
print(type(node.target).__name__, type(node.target.ctx).__name__) # → Tuple Store
print(node.iter.func.id, len(node.orelse)) # → enumerate 1
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности