La simplificación para hacer el código más legible en Python es uno de los puntos fuertes del lenguaje. En esta ocasión podemos ver cómo simplificar un par de condiciones al momento de asignar valores a variables.
Supongamos que tenemos una función que regresará un valor booleano (True, False). Podemos pasar de esto:
In [ ]:
def es_par(valor):
"""
Retorna True si el valor ingresado es par, False en caso contrario.
"""
if valor % 2 == 0
return True
return False
A algo como esto:
In [ ]:
def es_par(valor):
"""
Retorna True si el valor ingresado es par, False en caso contrario.
"""
return valor % 2 == 0
La explicación es bastante sencilla. Si tu valor a prueba va a retornar un boleano, no necesitas poner un bloque if, el mismo return hará la magia.
A veces el flujo de nuestra aplicación dependerá de algo más que una asignación; quizás un par, dependiendo de uno o dos factores. También podría ser simplicado.
Supongamos que tenemos una función que podría regresar algún valor entero, o None y queremos que una variable sea igual a 0 en caso de que ésta sea None (y que por cuestiones de diseño no podemos cambiar esa función). Podemos pasar de esto:
In [1]:
import random
def aleatorio():
"""
Función de prueba, regresará algunos números enteros, o None.
"""
valores = (None, 1, 15, 23, 42)
return random.choice(valores)
for _ in range(10):
x = aleatorio()
if x is None:
print 0
else:
print x
Por algo como esto:
In [2]:
for _ in range(10):
x = aleatorio()
print x or 0
La asignación de variables podría depender de algunos valores relacionados en alguna otra variable. Tomando por ejemplo la misma función que regresa una serie de enteros o None, quizás quisieramos asignar el valor de esa función al cuadrado, siempre y cuando no sea None:
In [3]:
for _ in range(10):
x = aleatorio()
if x is None:
x2 = 'NaN'
else:
x2 = x **2
print x2
Por algo más sencillo:
In [4]:
for _ in range(10):
x = aleatorio()
x2 = 'NaN' if x is None else x**2
print x2
Esta última operación es conocida como Expresiones Condicionales (Conditional Expressions), documentada en el PEP-0308 y está disponible a partir de Python 2.5.
Por Espartaco Palma (@esparta)
Este obra está bajo Licencia Creative Commons Atribución 4.0 Internacional.