Ulrich Eckhardt [EMAIL PROTECTED] added the comment:
http://effbot.org/pyfaq/why-are-default-values-shared-between-objects.htm
The same recently cropped up on the users mailinglist under the topic
default value in __init__.
--
nosy: +eckhardt
___
New submission from Torsten Rottmann [EMAIL PROTECTED]:
The attached file produced the following result:
__
trott$ python2.5 p6.py
[]
[1234]
__
I expected both times the empty list since the print
statement prints just a defaulted parameter (e) which
was
Torsten Rottmann [EMAIL PROTECTED] added the comment:
OK. I've read the Python Reference Manual 7.6 Function Definition.
It explains why this happens.
BUT: Why can`t the compiler make a copy of the default object, if
it's mutable (e.g. a list)? This can't be that difficult.
Amaury Forgeot d'Arc [EMAIL PROTECTED] added the comment:
Yes, the default value expression could be evaluated each time the
function is called without the parameter. But it would be another language.
Default values are computed once, and this is a Python feature.
It can be useful, for example