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

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


BTW, el nombre del segundo dict seria MODEL, me comi dos letras, jaja.


2014-06-04 19:21 GMT+00:00 Claudio Omar Melendrez Baeza <
claudio.melendrez en gmail.com>:

> 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/34307f04/attachment-0001.html>


More information about the pyar mailing list