Similar to Python Positional-Only Parameters but the other way around: parameters placed on the right side of the *
syntax parameter will be coerced into the keyword-only parameter type.
def f(a, *, b, c):
print(a, b, c)
In the above excerpt, a
can be given either as positional or keyword parameter. However, b
and c
do not have other options beside being pass through keyword arguments:
python> f(1, b=2, c=3)
1 2 3
python> f(a=1, b=2, c=3)
1 2 3
Should you try something else, it will most likely fails:
python> f(1, 2, 3)
TypeError: f() takes 1 positional argument but 3 were given
Notes:
- Python does not allow positional arguments after keyword arguments because of the left-side/right-side of the
*
operator thingy. *args
are collecting as positional arguments.**kwargs
are collecting as keyword-arguments.