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

Angel Java Lopez ajlopez2000 en gmail.com
Vie Jun 6 14:24:33 ART 2014


Ah! Ahi veo una posible justificacion a hablar de "nombres", la existencia
globals() y su semantica.

Es lo que complica implementar Python directamente en otros lenguajes (por
ejemplo en JavaScript). Vean todo el trabajo que se tuvo que tomar la gente
de Brython para implementar esa semantica, por ejemplo.

El tema de alias, sigue igual, con "nombres" o variables, el valor es una
referencia (creo recordar que en CPython hasta el valor 1 era una
referencia, solo que creo que aplican el patron FlyWeight; en cambio en
viejas implementaciones de Smalltalk, SmallInteger era realmente la
representacion binaria del entero. En una "variable"/"nombre" se guardaba
el valor entero, si entraba (si era SmallInteger), o el "puntero" o "nro.
de objeto", si no entraba, cosas vederes ;0)

Yo pondria, hay variables, y los nombres de las variables estan en
globals() (recuerdo que me complico entender el termino, porque tampoco
globals() apunta a todo, sino a lo que ve el "modulo" actual, que recuerde,
es asi en Python?)

Nos leemos!

Angel "Java" Lopez
@ajlopez


2014-06-06 14:03 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:

> 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
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140606/329c9e42/attachment.html>


More information about the pyar mailing list