Death to tuples!

Duncan Booth duncan.booth at invalid.invalid
Tue Nov 29 06:00:57 EST 2005


Antoon Pardon wrote:

> The question is, should we consider this a problem. Personnaly, I 
> see this as not very different from functions with a list as a default
> argument. In that case we often have a list used as a constant too.
> 
> Yet python doesn't has a problem with mutating this list so that on
> the next call a 'different' list is the default. So if mutating
> a list used as a constant is not a problem there, why should it
> be a problem in your example?
> 
Are you serious about that?

The semantics of default arguments are quite clearly defined (although 
suprising to some people): the default argument is evaluated once when the 
function is defined and the same value is then reused on each call.

The semantics of list constants are also clearly defined: a new list is 
created each time the statement is executed. Consider:

  res = []
  for i in range(10):
     res.append(i*i)

If the same list was reused each time this code was executed the list would 
get very long. Pre-evaluating a constant list and creating a copy each time 
wouldn't break the semantics, but simply reusing it would be disastrous.



More information about the Python-list mailing list