On 08/31/2013 08:07 AM, Fabrice Pombet wrote:

well, look at that:

a=(1,2)
a=2+3 ->a is an object and I have changed its type and value from outside.

No, `a` is not an object, so you did not change the type of any object. `a` is just a name (a label), that initially refers to the tuple (1, 2):

>>> a = (1, 2)
>>> id(a)
140377464514968

ad after, to another object, of type int:

>>> a = 2 + 3
>>> id(a)
8752608

The bytecode:

>>> dis.dis('a = (1, 2); a = 2 + 3;')
  1           0 LOAD_CONST               4 ((1, 2))
              3 STORE_NAME               0 (a)
              6 LOAD_CONST               5 (5)
              9 STORE_NAME               0 (a)
             12 LOAD_CONST               3 (None)
             15 RETURN_VALUE

Regards, M.

--
Marco Buttu
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to