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
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.
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.
Deja una respuesta
Muy buen, seguí publicando documetos asi, un abrazo desde Argentina