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. *argsare collecting as positional arguments.**kwargsare collecting as keyword-arguments.
