all Python 3astterm
ast.arguments
functions and classes
The node for a whole function or lambda signature: posonlyargs, args, vararg, kwonlyargs, kw_defaults, kwarg, defaults. The args field of FunctionDef and Lambda.
Syntax
ast.arguments(posonlyargs, args, vararg, kwonlyargs, kw_defaults, kwarg, defaults)
defaults are right-aligned: the default values belong to the last parameters of posonlyargs + args, so in def f(a, b=2) the defaults list has length 1. kw_defaults, by contrast, has the same length as kwonlyargs, with None for parameters without a default. *args and **kw are the separate fields vararg and kwarg (one arg or None), not items of args.
Examples
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
See also
Open in the full glossarydocs.python.orgReport an inaccuracy