Is behavior of += intentional for int?

Paul McGuire ptmcg at austin.rr.com
Sat Aug 29 09:08:49 EDT 2009


On Aug 29, 7:45 am, zaur <szp... at gmail.com> wrote:
> Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
> [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
> Type "copyright", "credits" or "license()" for more information.>>> a=1
> >>> x=[a]
> >>> id(a)==id(x[0])
> True
> >>> a+=1
> >>> a
> 2
> >>> x[0]
>
> 1
>
> I thought that += should only change the value of the int object. But
> += create new.
> Is this intentional?

ints are immutable.  But your logic works fine with a mutable object,
like a list:

>>> a = [1]
>>> x = [a]
>>> print id(a) == id(x[0])
True
>>> a += [1]
>>> print a
[1, 1]
>>> print x[0]
[1, 1]

What exactly are you trying to do?

-- Paul



More information about the Python-list mailing list