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

Roberto Alsina ralsina en netmanagers.com.ar
Mie Jun 4 18:31:34 ART 2014


On 04/06/14 18:20, Claudio Freire wrote:
> 2014-06-04 17:57 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar>:
>> No creo que "puedo crear una función con el mísmo código que está en el if y
>> sacar el codeobject de esa función" sea lo mismo que decir "el codigo
>> adentro de un if es un objeto".
>
> ¿por qué no?

Porque hay una cosa que se llama "boxing". En los lenguajes en los que 
no todo es un objeto, el boxing se usa para "meter" un valor en un 
objeto, y "unboxing" para volver a sacarlo. Y lo que estás haciendo es 
(me parece) "boxear" ese pedazo de código, que no es un objeto, adentro 
de un objeto.

> ¿Es la "a" de "hola" un objeto?

En un objeto str en python 3, "a" no es un objeto, porque de hecho no 
tiene "existencia", no es visible para el lenguaje hasta que hacés 
"hola"[3].

> Si no lo es... ¿acaso quiere decir que no todo en el lenguaje es un objeto?
>
> Las funciones están compuestas por un CodeObject, que uno puede
> manipular como quiera. Los CodeObject se pueden ejecutar, también.

Si, no te digo que un CodeObject no es un objeto. Te digo que eso 
adentro del if no es un CodeObject hasta que hacés varias líneas de 
cosas raras para que lo sea :-)

> Extraer el cuerpo del "if" como CodeObject ejecutable es una operación
> muy similar a extraer la "a" de "hola", así que el hecho de que cueste
> trabajo hacerlo no quiere decir que el código de ahí dentro no sea un
> objeto para la aplicación.

Extraer la "a" de "hola" es en realidad crear un objeto. "hola"[3] es 
(digamos, ignorando todo el sugar) una función que devuelve un objeto.
Pero estoy creando el objeto "a" a partir del objeto "hola", aún si uso 
un string literal, porque eso también es un objeto.
Vos estás creando un objeto a partir de algo que (creo) no es un objeto.




More information about the pyar mailing list