When it comes to version and API changes, Python optional arguments are evil.
Say you define a function like this:

def someFunction(param1, param2, optParam=None)
    # code

And you are calling it from module whatever.py like this:

retValue = someFunction(x, y, z)

A few weeks later you need to change the API adding a new mandatory parameter:

def someFunction(param1, param2, param3, optParam=None)
    # code

But you forget to update the call at whatever.py. It does not raise any exception but there is a big semantic error, “someFunction” is considering “z” as the “param3” where the caller is considering it the “optParam”.
I try to avoid optional arguments as much as I can.