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

Claudio Omar Melendrez Baeza claudio.melendrez en gmail.com
Mie Jun 4 16:21:43 ART 2014


A mi siempre me parecio que lo que demostraba mucho la idea de "nombres vs.
variables" era la utilizacion de alias para funciones y clases y usarlas de
forma dinamica, tipo:

CONV = {set: list, int: str}
MOD = {'dude': Person, 'lala': SomethingElse}
model = MODEL.get(x, DefaultClass)                       # var tipo...
clase? wtf?
convert = CONV.get(type(x), float)                            # var tipo...
func? wtf^2?
obj = model(convert(x))

Por ahi porque es algo que no se aplica al concepto de variable, que es una
"caja" donde entra un "tipo" de "dato". Nada que ver en Python.


2014-06-04 19:16 GMT+00:00 Roberto Alsina <ralsina en netmanagers.com.ar>:

> On 04/06/14 16:04, fisa wrote:
>
>> El tema de que en python hay nombres y no variables (al menos lo que
>> se llama variables en el resto de los lenguajes), es bien cierto.
>> Pero la explicación que da para mostrarlo, no está bien. Está atándose
>> a algo que se da así simplemente por una caché de números que cpython
>> tiene para mejor performance, y que en otras implementaciones de
>> python no sucede. Eso que muestra no es por usar nombres, eso pasa por
>> la caché de números chicos.
>> Ese ejemplo en otros pythons no anda, siendo que esos otros pythons
>> siguen teniendo nombres y no variables.
>> De hecho si hace el mismo ejemplo con números más grandes en lugar de
>> 1 y 2, tampoco le va a andar en cpython, y eso no quiere decir que la
>> lógica de nombres vs variables cambie para números grandes.
>>
>> Lo que realmente expone el tema de nombres es hacer cosas como "a =
>> b", o el pasaje de parámetros. Ahí es donde se ve el tema de nombres,
>> y no en comparar ids de ints.
>>
>>
>
> Nombres hay en todos los lenguajes. Lo que no hay en python es asignación
> :-)
>
> Lo que hay es "binding", que si hay que traducirlo pongámosle "etiquetado".
>
> Por eso:
>
> >>> a=[]
> >>> b=a
> >>> a += [1]
> >>> b
> [1]
>
> Y la otra cosa que hay es algunos objetos inmutables. Por eso:
>
> >>> a=""
> >>> b=a
> >>> a += "1"
> >>> b
> ''
>
> Lo demás es todo consecuencia de esos dos ejemplos.
>
> Por eso esto está mal:
>
> def f(x={}):
>
> Por eso esto está bien:
>
> def f(x="foo"):
>
> etc, etc, etc. No es difícil, lo que es es raro :-)
>
> _______________________________________________
> 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/20140604/a0ab7bce/attachment.html>


More information about the pyar mailing list