joepie91/python-whois — pull request #29 by samstav (2014-07-10 20:48:12+00:00)
Title: default kwargs are evaluated at definition time

After seeing some strange behavior while trying to write unittests for my script which uses python-whois, I thought I would go ahead and submit this patch. This PR addresses a comment made here:

https://github.com/joepie91/python-whois/commit/d86e4ba9166e80b8c66b093b355f3c32e94c0229#commitcomment-6967148

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