Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Paradigma Funcional
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● El concepto programación funcional hace referencia a un estilo de
programación que utiliza las funciones como unidad básica de código.
● Hay desde lenguajes puramente funcionales como Haskell o Lisp, hasta
lenguajes multiparadigma como Python.
● Para que un lenguaje permita la programación funcional, debe tratar a
las funciones como ciudadanos de primera clase. Es lo que ocurre con
Python; las funciones son objetos, al igual que los strings, los números y
las listas. Las funciones pueden pasarse como parámetros a otras
funciones o devolverse como valores de retorno de funciones.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Características principales:
● Funciones puras: Una función pura es aquella cuyo resultado depende
solo de sus parámetros de entrada y no tiene efectos secundarios.
● Hacer código más declarativo: Se enfoca en el "qué" en lugar del "cómo",
lo que suele resultar en un código más claro y fácil de entender.
● Funciones de orden superior: Estas son funciones que pueden recibir
otras funciones como argumentos o devolver funciones como resultado.
● Expresiones en lugar de instrucciones: En lugar de usar bucles y
comandos, se favorecen las expresiones y combinaciones de funciones.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Funciones como Ciudadanos de Primera Clase
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Se dice que un lenguaje de programación tiene funciones de primera
clase si se admite:
• Asignar funciones a variables o almacenarlas en estructuras de datos.
• Poder pasar funciones como argumentos a otras funciones.
• Que el valor de retorno de una función sea otra función.
Las funciones en Python son ciudadanos de primera clase (first-class
citizens). La máxima de Python de “Everything is an object” (todo es
un objeto) también vale para las funciones.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Asignar funciones a variables
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Almacenarlas en estructuras de datos (listas)
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Almacenarlas en estructuras de datos (tuplas)
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Almacenarlas en estructuras de datos (diccionarios)
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Esto demuestra la flexibilidad de las funciones como ciudadanos de primera
clase en Python, permitiendo manipularlas y almacenarlas como cualquier
otro tipo de dato.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Funciones de Orden Superior
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Las funciones de orden superior (o funciones de mayor orden) son aquellas
que pueden tomar otras funciones como argumentos y/o devolver funciones
como resultados. Son una característica poderosa que permite una gran
flexibilidad y funcionalidad en el código.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Funciones como parámetro de
otras funciones
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
En Python, las funciones pueden ser utilizadas como parámetros de
otras funciones. Esto es posible porque las funciones en Python, como
mencionamos anteriormente, son ciudadanos de primera clase.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Función que toma otra función como parámetro
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Función que toma otra función como parámetro
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Función que toma otra función como parámetro
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Funciones como retorno de otras funciones
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Es posible también, que una función retorne otra función como
resultado. Este tipo de funciones se llaman funciones que retornan
funciones.
Este tipo de funciones son muy útiles para crear decoradores o para
generar funciones personalizadas.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Función que devuelve otra función
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Función que devuelve otra función que multiplica su entrada por una base
dada.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Función que retorna diferentes funciones de formateo de cadenas
1
2
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Funciones lambda
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Las funciones lambda o anónimas son un tipo de funciones en Python
que típicamente se definen en una línea y cuyo código a ejecutar suele
ser pequeño.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Características
● Funciones anónimas: Las funciones lambda son funciones anónimas,
es decir, no tienen un nombre definido.
● Sintaxis concisa: Se definen en una sola línea utilizando la palabra
clave lambda seguida de los parámetros, un signo : y una expresión.
● Retorno implícito: devuelven automáticamente el resultado de la
expresión, sin necesidad de utilizar la palabra clave return.
● Limitación en la lógica: Están diseñadas para operaciones simples y
no soportan múltiples líneas o declaraciones complejas.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Características
● No recomendadas para lógica compleja: Debido a su sintaxis
limitada, no se recomienda usarlas para lógica compleja o extensa.
● Útiles en expresiones cortas: Son ideales para ser usadas en casos
donde se requiere una función pequeña y de uso inmediato.
● Usos comunes: Se utilizan frecuentemente en funciones de orden
superior como map(), filter(), y sorted(), donde se requieren funciones
cortas.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Sintaxis de una función lambda
Si una función lambda no se guarda en una
variable o no se pasa directamente como
argumento a otra función, se crea pero no se
puede utilizar porque no está referenciada en
ninguna parte.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● Comparando una función normal con una función lambda
● Lo que sería una función que suma dos
números como la que vemos primero en
el código.
● Se podría expresar en forma de una
función lambda.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
● lambda como parámetro de una función
En este ejemplo la función validar acepta
dos parámetros, uno es un entero y el
otro una función. En este caso le pasamos
una función lambda como segundo
parámetro.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Resumen de la clase:
● Funciones como ciudadanos de primera clase: Las funciones en Python
pueden ser asignadas a variables, pasadas como argumentos y
retornadas como resultado.
● Funciones como parámetros: Permiten crear soluciones más flexibles y
reutilizables al pasar funciones como argumentos.
● Funciones con retorno de otras funciones: Permiten generar funciones
especializadas en tiempo de ejecución.
● Funciones lambda: Son expresiones concisas para crear funciones
anónimas, útiles en situaciones donde se requieren funciones simples y
cortas.
Programación 1
Zotti, Enzo Martin - Valls, Fernando
Paradigma funcional
Recomendaciones:
● Practicar el uso de funciones como ciudadanos de primera clase.
● Pasar funciones como parámetros para mayor flexibilidad.
● Explorar el retorno de funciones para crear lógica modular.
● Dominar las funciones lambda para mantener el código limpio.