все Python 3astпонятие
ast.Call
выражения
Узел вызова f(...): вызываемое выражение в func, позиционные аргументы в args и именованные в keywords.
Синтаксис
ast.Call(func, args, keywords)
Распаковки при вызове лежат не там, где ждут: *items попадает в args как узел Starred, а **options — в keywords как keyword с arg=None. Поле func — любое выражение: у obj.method() там Attribute, у f()() — снова Call, так что имя функции берут не просто node.func.id. Сама инструкция print(1) отдельной строкой — это Expr, внутри которого Call.
Примеры
import ast
node = ast.parse('f(1, *rest, key=2, **opts)', mode='eval').body
print(node.func.id, [type(a).__name__ for a in node.args]) # → f ['Constant', 'Starred']
print([k.arg for k in node.keywords]) # → ['key', None]
import ast
node = ast.parse('obj.save()', mode='eval').body
print(type(node.func).__name__, node.func.attr) # → Attribute save
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности