2010
03.03

Estas tres últimas semanas, por diversos motivos, han sido bastante estresantes para mí. A pesar de todo, siempre aprovecho algún hueco para hacer alguna cosa divertida, como la del script que se replica a si mismo, que publiqué en la entrada anterior.

A veces, cuando estamos resolviendo un problema, debemos anotar que una variable tiene un valor desconocido. Normalmente, en C y SQL se usa NULL, en Lisp se usa nil, y en Python None. Centrémonos en python: en ocasiones el valor None también tiene sentido en una variable; puede significar que la variable, efectivamente, no contiene ningún valor, pero hay otros significados, otra semántica, que nos podría interesar. Por ejemplo, a mí me gusta trabajar con el valor desconocido que es distinto del valor ninguno (None) que uso para otra cosa. Podemos hacer lo siguiente:

Esto funciona porque en python las clases son, a su vez, objetos. El operador is sólo devuelve True si la referencia apuntada por el primer objeto y el segundo son la misma, es decir, si son la misma instancia. Además, el operador is puede usarse en combinación con not, con la siguiente sintaxis:

Esto no sólo aumenta aún más la legibilidad del código (python ya es muy cercano al inglés en algunos casos), sino que realmente no es necesario comentar el código: el código es el comentario.

Otra aplicación que le veo a usar clases de python para aumentar la semántica de los valores, añadiendo cosas como Infinito:

Share
  1. […] a previous post y wrote about Python’s elegance, and some tips to make your code look even fancier and closer to the English language. I’m […]

    Like or Dislike: Thumb up 0 Thumb down 0

  2. Buena pregunta, Kuu. Lo cierto es que puede darse el caso de que quieras usar una variable no inicializada. Un ejemplo claro: buscar el máximo valor de un vector numérico. Inicializas la variable MAX a “desconocido”. Luego recorres el vector con un índice y actualizas ese MAX si éste es desconocido o menor que el valor apuntado por la variable que recorre el vector.

    En realidad, lo que suele hacerse es inicializar MAX con el valor del primer elemento del vector, o con un valor que se sepa que siempre será menor que los contenidos en el vector. Pero a veces esto es un poco coñazo, y el código, además, no queda tan limpio.

    Like or Dislike: Thumb up 0 Thumb down 0

  3. ¿Y cuando un valor de una variable es “desconocido”? En teoría, el programador debería saber en todo momento que valores puede tener una variable, no se me ocurre en que caso se puede dar…

    Like or Dislike: Thumb up 0 Thumb down 0