In Python you may have a function definition:
def info(object, spacing=10, collapse=1)
which could be called in any of the following ways:<
As other answers say, changing function signatures is a bad idea. Either add new parameters to the end, or fix every caller if arguments are inserted.
If you still want to do it, use a function decorator and the inspect.getargspec function. It would be used something like this:
@require_named_args
def info(object, spacing=10, collapse=1):
....
Implementation of require_named_args is left as an exercise for the reader.
I would not bother. It will be slow every time the function is called, and you will get better results from writing code more carefully.