[pyar] [video] En Python tenemos nombres, no variables.

Facundo Batista facundobatista en gmail.com
Vie Jun 6 14:03:57 ART 2014


2014-06-06 12:32 GMT-03:00 Emiliano Dalla Verde Marcozzi
<edvm en fedoraproject.org>:

> Gracias por la respuesta Roberto, pero con id() no veo pueda obtener la
> posición en memoria del nombre, ej:
>
> In [1]: def foo():
>    ...:     pass
>
> In [2]: id(foo)
> Out[2]: 21668760
>
> In [3]: a = foo
>
> In [4]: id(a)
> Out[4]: 21668760
>
> al bindear el nombre 'a' a foo, id(a) me retorna el mismo id que foo (porque
> apunta a foo) pero no me dice
> donde está / existe 'a'. Me surge esta duda porque mencionaron que los
> 'nombres' en algún lado se guardan,
> y algún lugar en la memoria deben ocupar.

Se guardan en un diccionario! O mejor dicho, son las claves de ese
diccionario que llamamos "espacio de nombre". Y estas claves no son
más que strings:

>>> def foo(): pass
...
>>> id(foo)
3071281956
>>> espacio_de_nombres = globals()
>>> type(espacio_de_nombres)
<class 'dict'>
>>> espacio_de_nombres['foo']
<function foo at 0xb7100b24>
>>> id(espacio_de_nombres['foo'])
3071281956
>>> nombre = [k for k in espacio_de_nombres if k == 'foo'][0]
>>> nombre
'foo'
>>> id(nombre)
3071306496

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


More information about the pyar mailing list