Here's the answer to the question: http://www.python.org/doc/faq/general/#why-are-default-values-shared-between-objects
It looks like Guido disagrees with me, so the discussion is closed. For the record, I still think the following would be an improvement to py3k: In python25: def f(a=None): if a is None: a = [] ... In py3k becomes: def f(a=[]) ... In python25 (this function from the FAQ linked above): def f(a, _cache={}): # Callers will never provide a third parameter for this function. (then why is it an argument?) ... In py3k becomes: _cache = {} def f(a): global _cache ... This follows the "explicit is better" and "one best way" principles of Python, and greatly improves the intuitiveness. Also since the first example is much more common, it reduces the overall verbosity of the language. Just my parting two cents, --Buck -- http://mail.python.org/mailman/listinfo/python-list