Ian Bicking: the old part of his blog


A better way to accomplish the same thing is to:

1. Create a new function that takes the new parameters you need.
2. Move the implementation of the existing function into the new function.
3. Change the original function to call the new function with the correct "default" parameters.

This lets the users of the older version still use it without changing, and still provides the extended functionality. Moreover, having two separate APIs makes a potential user think about which version he wants before calling. Naturally, this can be taken to unhealthy extremes, but it's usually safer than having a pile of assumptions in default parameters.
Comment on A Python Poka-Yoke