Programación Funcional con Python - Ejemplos Practicos

Hola a todos, mi nombre es Luis y les doy la bienvenida a Mi Diario Python.
En este articulo me dedicare a mencionarles y mostrarles los conceptos básicos de la programación funcional.
Antes de comenzar quisiera recordarles que en el blog tenemos unos muy buenos artículos para Aprender Python.

Programación Funcional

Resultado de imagen para programacion funcional
La programación funcional es un estilo de programación, que como dice su nombre, gira en torno a funciones. Un ejemplo clave de la programación funcional, son las funciones de orden superior, las cuales reciben otras funciones como argumento, o las devuelven como resultado. Ejemplo:
def test(func, n):
    return func(func(n))

def mult(x):
    return x * x

print(test(mult, 2))

16
¿Por que 2? La función test recibe a la función y la llama dos veces dentro de su cuerpo.
Índice()

    Funciones Puras

    La programación funciona, busca utilizar funciones puras. La funciones puras no tienen un efecto secundario y devuelven un valor que depende unicamente de sus argumentos.
    A continuación les mostrare un ejemplo de una función pura.
    def func_pure(a,b):
        x = a * b
        return x / (a + b)
    
    func_pure(20, 14)
    
    
    8.235294117647058
    Como pueden observar, la función pura, solo devuelve valor dependiente de sus argumentos, sin la necesidad de una variable externa y sin alterar ninguna variable global.

    Lambdas

    Las funciones lambas, son funciones anonimas. Son conocidas de esta manera por la forma en la que son declaradas. A continuación les mostrare un ejemplo de una función lambda.
    fun = lambda x: x**2
    fun(5)
    
    
    25
    Como pueden observar, las funciones lambda son de una solo linea. Su sintaxis es muy simple: palabra clave (lambda) argumentos que tomara, seguido de dos puntos definiriamos la acción que realizara la función. También se puede observar que no hay necesidad de de escribir return, ya que lambda solo devuelve el valor.

    Filter y Map

    Las funciones incorporada map y filter son funciones de orden superior muy útilis que operan sobre listas.
    La función filter, filtra un iterable eliminando elementos que no coinciden con el predicado. Ejemplo:
    nums = [11,22,33,44,55]
    res = list(filter(lambda x: x%2==0, nums))
    print(res)
    [22, 44]
    Como pueden apreciar, el resultado del filtro son solo valores que sean divisibles por 2.
    La función map recibe una función y un iterable como argumentos y devuelve un nuveo iterable con la función aplicada a cada argumento. Ejemplo:
    def add_five(x):
        return x + 5
    
    nums = [11,22,33,44,55]
    result = list(map(add_five, nums))
    print(result)
    [16, 27, 38, 49, 60]
    
    
    Y el resultado seria, el valor de cada elemento de la lista con la función aplicada (sumar 5 a cada elemento)

    Generadores

    Los generadores son un tipo de iterable, como las listas o las tuplas. A diferencia de las listas, no permiten indexar con índices arbitrarios, pero pueden aún ser iterados con el bucle for. Los generadores pueden ser creados utilizando funciones y la sentencia yield. Ejemplo:
    def countdown():
        i=5
        while i > 0:
            yield i
            i -= 1
    
    for i in countdown():
        print(i)
    5
    4
    3
    2
    1
    Y como pueden observar, el resultado es una cuenta regresiva.

    Decoradores

    Los decoradores ofrecen una manera de modificar funciones utilizando otras funciones. Esto es ideal cuando necesitas extender la funcionalidad de las funciones que no quieres modificar. Ejemplo:
    def decor(func):
        def wrap():
            print("="*12)
            func()
            print("="*12)
        return wrap
    
    @decor
    def print_text():
        print("Hola Mundo!")
        
    print_text()
    ============
    Hola Mundo!
    ============
    Como pueden observar, los decoradores pueden llegar a ser muy útiles.

    Recursión

    La recursión es un concepto muy importante en la programación funcional. Lo fundamental de la recursión es la autorreferencia - función que se llama a sí misma. Se utiliza para resolver problemas que pueden ser divididos en subproblemas más sencillos del mismo tipo. Ejemplo:
    def factorial(x):
        if x == 1:
            return 1
        else:
            return x * factorial(x-1)
        
    print(factorial(6))
    720

    Conjuntos

    Los conjuntos son estructuras de datos parecidas a las listas o alos diccionarios. Son creados utilizando llaves o la función set. Comparten algunas de las funcionalidades de las listas, como el uso de in para chequear si contienen un elemento en particular.
    num_set = {1,2,3,4}
    word_set = set(["spam","eggs", "sausage"])
    
    print(7 in num_set)
    print("spam" in word_set)
    False
    True
    Bueno, dejare este articulo hasta aqui, este tema lo ampliare con articulos individuales en una proxima ocación.
    ¿Alguna duda? No olvides dejar tu comentario.
    Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
    1. Unknown dice:

      Muy buen, seguí publicando documetos asi, un abrazo desde Argentina

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.