все Python 3astпонятие
ast.Yield
функции и классы
Узел выражения yield: value — отдаваемое значение или None. Как инструкция стоит внутри Expr.
Синтаксис
ast.Yield(value=None)
yield — выражение, а не инструкция: строка yield x — это Expr(Yield), а x = yield — Assign с Yield справа, value которого None. yield from — отдельный узел YieldFrom. Функцию-генератор ast никак не помечает: у FunctionDef нет такого флага, и узнать, генератор ли она, можно только поиском Yield в теле, не заходя во вложенные функции и lambda.
Примеры
import ast
f = ast.parse('def g():\n yield 1\n x = yield').body[0]
print(type(f.body[0]).__name__, type(f.body[0].value).__name__) # → Expr Yield
print(f.body[1].value.value) # → None
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности