Python Glossary English

Python 3.3+astпонятие

ast.YieldFrom

функции и классы

Узел выражения yield from <итерируемое>: делегирование подгенератору. Поле value — выражение, из которого берутся значения. Появился в 3.3.

Синтаксис

ast.YieldFrom(value)

Это выражение, а не инструкция: строка yield from g() разбирается как Expr со значением YieldFrom, а r = yield from g() — как Assign. Функция с YieldFrom — генератор, это видно только по наличию узла в теле. ast.parse не проверяет, что yield from стоит внутри функции; ошибку даст лишь compile.

Примеры

import ast
g = ast.parse('def g():\n    r = yield from range(3)').body[0]
node = g.body[0].value
print(type(g.body[0]).__name__, type(node).__name__, ast.unparse(node.value))
# → Assign YieldFrom range(3)
import ast
tree = ast.parse('yield from x')
print(type(tree.body[0].value).__name__)  # → YieldFrom
try:
    compile(tree, '<ast>', 'exec')
except SyntaxError as e:
    print(type(e).__name__)  # → SyntaxError

См. также

Частые ошибки

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