[pyar] i+=1 vs i=i+1

Alejandro Santos listas en alejolp.com
Mie Mayo 9 12:30:37 ART 2012


2012/5/9 Claudio Freire <klaussfreire en gmail.com>:
> 2012/5/9 Alejandro Santos <listas en alejolp.com>:
>>>>> def f():
>> ...     x = "slskjfsldkjfsldkjfslkllll"
>> ...     return sys.getrefcount(x)
>> ...
>>>>> f()
>> 3
>>
>> Ese 3 de ahí no le veo sentido. ¿Hay algun closure/cell en el medio?
>
> La constante en sí es la tercer referencia.
>

Genial, ahora lo veo.

>>> def f():
...     x = "sldkjfskldkkk"
...     x += "uuu"
...     return sys.getrefcount(x)
...
>>> f()
2

Sobre la optimización de cambiar el tamaño de un string, no tuve en
cuenta si el tamaño del nuevo string era mayor al tamaño del buffer
del string original. Ahora sí veo cómo está funcionando lo que decís.

>>> a = "sjdfsjdf jjjjjj"
>>> sys.getrefcount(a)
2
>>> id(a)
139892069328352
>>> a += ""
>>> id(a)
139892069328352
>>> a += " "
>>> id(a)
139892069328352

-- 
Alejandro Santos



More information about the pyar mailing list