[Python-Dev] [PEP] += on return of function call result

Greg Ewing greg@cosc.canterbury.ac.nz
Thu, 03 Apr 2003 13:07:52 +1200 (NZST)


Andrew Koenig wrote:

> Why can't you do this?
>                         foo = log.setdefault(r,'')
>                         foo += "test %d\n" % t

You can do it, but it's useless!

>>> d = {}
>>> foo = d.setdefault(42, "buckle")
>>> foo += " my shoe"
>>> d
{42: 'buckle'}

What Mr. Leighton wanted is *impossible* when the value
concerned is immutable, because by the time you get to
the += operator, there's no information left about where
the value came from, and thus no way to update the
dict with the new value.

Greg Ewing, Computer Science Dept, +--------------------------------------+
University of Canterbury,	   | A citizen of NewZealandCorp, a	  |
Christchurch, New Zealand	   | wholly-owned subsidiary of USA Inc.  |
greg@cosc.canterbury.ac.nz	   +--------------------------------------+