And here's an argument for why you want your non-varying arguments to come first in your function signature.
Many languages have the concept of "partial application", where supplying a function with fewer arguments than it expects doesn't raise an error, but instead returns a function that is waiting for the remaining arguments.
For example, imagine if you had a function add(x,y)
and add(1)
didn't throw an error, but returned a function that was waiting for y
and returned 1 + y
when you supplied it with that single argument, e.g.,
def add(x, y):
return x + y