These last three weeks have been really stressful for me due to various reasons. Anyway, I managed to get some spare time to do something funny, like the self-replicating script posted in the previous entry.

Sometimes, when we’re working on a problem, we need to denote a variable with an uknown value. C and SQL uses NULL for this purpose, while Lisp uses nil and Python have None. Let’s look python closer: sometimes, None really means none. But there are some cases we need another semantic interpretation. For example, I like to work with the unknown value, which means something different to none (None) which I use for different a purpose. We can do this:

This works because in python, Classes are also objects. The is operator only returns True if two objects are the same instance. Even better, the is operator allows an interesting syntax when used with not:

This not only enhances (IMHO) code legibility, it also make comments useless: the code is the comment itself.

Finally, this idea can be also used to define your own Infinitum value:

  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