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

Roberto Alsina ralsina en netmanagers.com.ar
Mie Jun 4 16:16:39 ART 2014


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 :-)


More information about the pyar mailing list