def foo(x, y=None, *args):
return [x, y, *args]
print(foo(1, 2, 3))
def foo(*args, y=None):
return [*arg, y]
print(foo(1, 2, 3))
When defining a keyword argument before variable positional arguments, one can end up in having multiple values passed for the aforementioned parameter in case the method is called with keyword arguments.