все Python 3astпонятие
ast.Lambda
функции и классы
Узел lambda-выражения: args — узел arguments, body — одно выражение (не список инструкций); имени у узла нет.
Синтаксис
ast.Lambda(args, body)
Тело — ровно одно выражение, поэтому в Lambda нет return: результат — сам body. Присваивание 'f = lambda x: x' — это Assign с Lambda в value, и имя f к узлу не привязано: инструменты, перечисляющие функции через FunctionDef, такие пропускают. Параметры устроены так же, как у def: тот же узел arguments со значениями по умолчанию.
Примеры
import ast
a = ast.parse('f = lambda x, y=2: x * y').body[0]
lam = a.value
print(type(a).__name__, type(lam).__name__) # → Assign Lambda
print([p.arg for p in lam.args.args], type(lam.body).__name__) # → ['x', 'y'] BinOp
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности