Una rareza de Python: La asociatividad de los comparadores

junio 30, 2009 Por: akheron Categorias: Python, Python Basico

Algunos lenguajes de programacíon de uso común, como C y C++, hacen que sus operadores de comparacion sean asociativos, por lo que presentan el problema de que expresiones como 2 < 1 < 4 producen un resultado que parece ilógico. Al ser asociativo por la izquierda el operador de comparacion <, se evalúa primero la subexpresion 2 < 1. El resultado es falso, que en C y C++ se representa con el valor 0. A continuacion se evalúa la comparación 0 < 4, cuyo resultado es… ¡cierto! Asi pues, para C y C++ es cierto que 2 < 1 < 4.

Pascal es más rigido aún y llega a prohibir expresiones como 2 < 1 < 4. En Pascal hay un tipo de datos denominado boolean cuyos valores válidos son true y false. Pascal no permite operar entre valores de tipos diferentes, así que la expresion 2 < 1 se evalúa al valor boolean false, que no se puede comparar con un entero al tratar de calcular el valor de false < 4. En consecuencia, se produce un error de tipos si intentamos encadenar comparaciones.

La mayor parte de los lenguajes de programación convencionales opta por la solución del C o por la solución del Pascal. Cuando aprendas otro lenguaje te costará <<deshabituarte>> de la elegancia con que Python resuelve los encadenamientos de comparaciones.

2 Comments to “Una rareza de Python: La asociatividad de los comparadores”


  1. jaja la verdad es k si
    nos acostumbramos a la manera de programar en otros lenguajes

    pascal me daba miedo xP

    1
    • A mi no me da miedo ningun lenguaje, solo que si hay algunos que me dan mas que hueva como es el caso de JAVA…no mas ni madre que me gusta ese lenguaje…bdaaaaa =-S. Prefiero no escribir tanto jejejje. =-p

      2


Leave a Reply