Funciones de orden superior

# Funciones normales sin misterio
def cuadrado(numero):
    return numero**2
def cubo(numero):
    return numero**3

# Función que usa otra función como parámetro
def aplicar(funcion,numero):
    return funcion(numero)

print(aplicar(cubo,3))

# Esta función nos genera una función nueva dependiendo del parámetro
# Y la devuelve
def generar_funcion(exponente):
    def potencia(numero):
        return numero**exponente
    return potencia

micubo=generar_funcion(3)

micuadrado=generar_funcion(2)

print(micuadrado(5))
print(micubo(2))

# Python usa filter que es de orden superior
# Su primer parámetro es una función

lista=[1,2,8,3,4,5]
def aprobado(numero):
    return numero>=5
def suspendidos(numero):
    return numero<5
def impar(numero):
    return numero%2==1
res=list(filter(aprobado,lista))
print(res)
res=list(filter(impar,lista))
print(res)
res=list(filter(suspendidos,lista))
print(res)

def mitad(numero):
    return numero/2
res=list(map(mitad,lista))
print(res)

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos