Expresiones Condicionales

Durante mucho tiempo se ha pedido incluir una manera de escribir sentencias condicionales, que son expresiones que retornan un valor A o un valor B, dependiendo de un tercer valor booleano, C. De esta forma, es posible expresar en una sola línea el equivalente al siguiente código:

if condición:
........x = valor_si_verdad
else:
........x = valor_si_falso

Ha habido un largo y tedioso debate sobre la sintaxis a utilizar, tanto en la lista python-dev como en comp.lang.python. Estaba claro que la mayoría quería sentencias condicionales, pero no había una sintaxis que fuera claramente favorita. Las opciones incluían, entre otras 16 variantes, una muy similar a la usada en C y derivados:

x = condición ? valor_si_verdad : alor_si_falso

Finalmente, Guido van Rossum se decantó por una alternativa diferente:

x = valor_si_verdad if condición else valor_si_falso

La sintaxis puede parecer extraña y enrevesada ¿Por qué la expresión condicional va en el medio, en vez de al principio, como en C? La decisión se tomó aplicando la nueva construcción al código de la librería estándar, y comprobando su efecto en la legibilidad del código. Se descubrió que, en la mayoría de los casos, un valor parecía ser el caso habitual, mientras que el otro era el caso excepcional, usado en raras ocasiones, cuando la condición no se cumplía. La sintaxis pretende destacar ese patrón de uso, por ejemplo:

contents = '[' + doc + ']' if doc else ''

La sentencia anterior se leería: “la variable contents normalmente vale lo que valga la variable doc, pero entre corchetes. No obstante, en algunos casos la variable doc está vacía; en este caso especial, contents será también una cadena vacía”.

También se ha discutido extensamente sobre la conveniencia de que el lenguaje obligue a rodear las expresiones condicionales con paréntesis. La decisión final ha sido dejarlos como opcionales:

# Sin paréntesis
level = 1 if logging else 0

# Con paréntesis
level = (1 if logging else 0)

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s