default kwargs are evaluated at definition time

This stackoverflow question covers the topic pretty well:

    http://stackoverflow.com/q/1132941/1547030

From docs.python.org:

    Default parameter values are evaluated when the function definition is
    executed. This means that the expression is evaluated once, when the
    function is defined, and that the same “pre-computed” value is used for
    each call. This is especially important to understand when a default
    parameter is a mutable object, such as a list or a dictionary: if the
    function modifies the object (e.g. by appending an item to a list), the
    default value is in effect modified. This is generally not what was
    intended. A way around this is to use None as the default, and
    explicitly test for it in the body of the function