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

Alejandro Santos listas en alejolp.com
Mie Mayo 9 12:02:53 ART 2012


2012/5/9 Claudio Freire <klaussfreire en gmail.com>:
> 2012/5/9 Alejandro Santos <listas en alejolp.com>:
>>
>> Está bien que haga esto, pero solo lo puede hacer cuando el refcount
>> de "algo" es == 1.
>
> <= 2 en realidad. Siempre hay una referencia extra en la pila del intérprete.
>

Está bien, no conozco los detalles finos internos de CPy, aunque me
resultan un poco confusos, me puse a probar en Python 2.7.2 y no me
cierra cómo cuenta las referencias.

>>> a = "String de prueba"
>>> sys.getrefcount(a)
2
>>> b = a
>>> sys.getrefcount(a)
3
>>> del b
>>> sys.getrefcount(a)
2
>>> 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?

Por otro lado, ¿Esta optimización que decís de refcount <= 2 se hace siempre?

>>> a = "String de prueba2"
>>> id(a)
139892069324960
>>> a += " mas caracteres en el string"
>>> id(a)
139892069293704


-- 
Alejandro Santos



More information about the pyar mailing list