Funciones lambda vs def-return
Las dos formas de escritura de funciones matemáticas básicamente hacen lo mismo. Sin embargo, cuando la función se define por tramos, la forma def-return se convierte en la más usada.
Funciones Lambda
Permite describir funciones sencillas de una sola línea, que no está conformada por intervalos.
f(x) = x \cos(x) - 2 x^2 + 3 x -1
import numpy as np fx = lambda x: x*np.cos(x) - 2*(x**2) + 3*x -1
>>> fx(0.2)
-0.28398668443175157
Funciones def-return
Permiten describir en detalle lo que sucede con una función matemática por intervalos. Tiene la ventaja de permitir definir valores por intervalos, puntos discontínuos, etc.
f(x)= \begin{cases}x\cos(x)-2 x^2 + 3 x -1, & x>0 \\ 1,&x\leq 0\end{cases}
import numpy as np def fx(x): if x>0: fi = x*np.cos(x) - 2*(x**2) + 3*x -1 if x<=0: fi = 1 return(fi)
>>> fx(0.2)
-0.28398668443175157
Tiempo de ejecución de algoritmo
Con varios métodos para resolver un problema, una media de eficiencia es el tiempo de ejecución de un algoritmo.

Para determinar el tiempo de ejecución de un algoritmo, se toman las lecturas de tiempo antes y después del bloque, calculando el tiempo de ocupación de las diferencias entre tiempos.
La librería "time" permite obtener lectura del reloj del computador.
Como un algoritmo de prueba se usa la suma de los m primeros números enteros.
# tiempos de ejecución de algoritmos
import time
# INGRESO
m = 100
# PROCEDIMIENTO
t1 = time.clock()
# Ejecuta Operaciones del algoritmo
suma = 0
for i in range(0,m,1):
suma = suma + i
t2 = time.clock()
# Tiempo para ejecutar operaciones
ocupado = t2-t1
# SALIDA
print('tiempos:')
print(t1, t2)
print('tiempo de ejecución:')
print(ocupado)
con lo que se obtienen los siguientes resultados:
tiempos:
8.210955878428587e-07 5.46028565915501e-05
tiempo de ejecución:
5.378176100370724e-05
>>>