все Python 3astпонятие
ast.arguments
функции и классы
Узел всей сигнатуры функции или lambda: posonlyargs, args, vararg, kwonlyargs, kw_defaults, kwarg, defaults. Поле args у FunctionDef и Lambda.
Синтаксис
ast.arguments(posonlyargs, args, vararg, kwonlyargs, kw_defaults, kwarg, defaults)
defaults выровнены по концу: значения по умолчанию относятся к последним параметрам из posonlyargs + args, поэтому в def f(a, b=2) список defaults имеет длину 1. А kw_defaults — той же длины, что kwonlyargs, с None для параметров без значения. *args и **kw — отдельные поля vararg и kwarg (один arg или None), а не элементы args.
Примеры
import ast
a = ast.parse('def f(a, b=2, *, c, d=4): pass').body[0].args
print([p.arg for p in a.args], [ast.unparse(d) for d in a.defaults]) # → ['a', 'b'] ['2']
print([p.arg for p in a.kwonlyargs]) # → ['c', 'd']
print([d if d is None else ast.unparse(d) for d in a.kw_defaults]) # → [None, '4']
import ast
a = ast.parse('lambda x, /, *rest, **kw: 0', mode='eval').body.args
print([p.arg for p in a.posonlyargs], a.vararg.arg, a.kwarg.arg) # → ['x'] rest kw
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности