Material Imprimible (7) Funciones 1
Material Imprimible (7) Funciones 1
El concepto de función
En programación, una función es un bloque de código diseñado para realizar una tarea
específica. Se pueden pasar datos a una función (estos datos se conocen como parámetros
o argumentos), y la función puede devolver datos como resultado. Las funciones permiten
segmentar programas grandes en partes más pequeñas y manejables, facilitando la
depuración, el mantenimiento y la reutilización del código.
Mientras que muchos lenguajes de programación vienen con una biblioteca estándar repleta
de funciones predefinidas (también conocidas como funciones incorporadas o built-in), los
programadores a menudo necesitan crear soluciones personalizadas para problemas
específicos que no se abordan directamente por las funciones existentes. Aquí es donde
entran las funciones definidas por el usuario.
Una función definida por el usuario es simplemente una función que ha sido creada por el
programador para realizar una tarea particular que no está contemplada por las funciones
predefinidas del lenguaje. Estas funciones se definen utilizando la sintaxis específica del
lenguaje de programación en uso, y una vez definidas, pueden ser llamadas y reutilizadas
múltiples veces a lo largo de un programa.
● Reutilización del código: Una vez que se escribe una función, puede ser utilizada
en múltiples lugares dentro de un programa, o incluso en diferentes programas. Esto
reduce la necesidad de escribir el mismo código una y otra vez.
● Composición: Las funciones pueden ser compuestas, lo que significa que el output
de una función puede ser utilizado como input para otra. Esto permite construir
soluciones complejas a partir de funciones más simples.
Descomposición y abstracción
Al profundizar en las ventajas del enfoque funcional, dos conceptos clave emergen como
pilares fundamentales: la descomposición y la abstracción. Estos conceptos son esenciales
para entender por qué las funciones son tan poderosas en la programación.
Imagina que estás construyendo una aplicación para gestionar un libro de recetas. En lugar
de escribir todo el código en un solo bloque masivo, puedes descomponer la aplicación en
funciones más pequeñas, cada una encargada de una tarea específica como "añadir
receta", "eliminar receta", "buscar receta por ingrediente", etc. Esta descomposición facilita
la gestión del proyecto, ya que puedes enfocarte en una función a la vez.
Por otro lado, cada función abstrae los detalles de cómo realiza su tarea. Por ejemplo, la
función "buscar receta por ingrediente" podría requerir el acceso a una base de datos y
realizar varias operaciones de búsqueda y filtrado. Sin embargo, para el usuario de la
función, estos detalles son irrelevantes; todo lo que necesita saber es que puede
proporcionar un ingrediente como argumento y recibir una lista de recetas como resultado.
En Python, las funciones se definen usando la palabra clave def, seguida del nombre de la
función y un par de paréntesis. Los paréntesis pueden incluir argumentos o parámetros si la
función los requiere, aunque en este caso nos centraremos en funciones que no reciben ni
devuelven datos. Después de los paréntesis, se coloca un dos puntos (:) y luego el cuerpo
de la función, que contiene el código que se ejecutará cada vez que la función sea llamada.
Este cuerpo debe estar indentado.
En este ejemplo, saludo es una función que no acepta argumentos y su única acción es
imprimir el mensaje "¡Hola, mundo!" en la consola. Para llamar o ejecutar esta función,
simplemente usas su nombre seguido de paréntesis:
Aquí, mostrar_mensaje es otra función sin parámetros que, cuando se llama, asigna un
string a la variable mensaje y luego imprime el contenido de mensaje. Para ejecutar esta
función:
Estas funciones son útiles para ejecutar código que realiza acciones específicas sin
necesidad de entrada externa ni retorno de valores. Aunque simples, son un buen punto de
partida para aprender cómo encapsular y organizar la lógica en bloques reutilizables de
código. Como veremos, las funciones que aceptan parámetros y/o devuelven resultados
amplían significativamente la potencia y flexibilidad de la programación en Python.
En Python, una función puede ser definida para recibir valores, los cuales se especifican
entre paréntesis en la definición de la función. Estos valores recibidos se llaman
parámetros, y cuando se invoca o llama a una función, los valores concretos que se pasan a
estos parámetros se conocen como argumentos.
Para definir una función que recibe valores en Python, se escribe el nombre de la función
seguido de paréntesis que incluyen los nombres de los parámetros. Estos actúan como
variables dentro de la función.
En este ejemplo, nombre es un parámetro de la función saludar. Cuando se llama a la
función, se debe proporcionar un argumento para este parámetro.
Una función puede devolver cualquier tipo de dato, incluyendo números, cadenas, listas,
diccionarios, objetos, o incluso otra función. Si una función no tiene una declaración return o
tiene un return sin un valor específico, devuelve None por defecto. Por supuesto, como
vimos antes, esto es opcional. En efecto, algunas funciones realizan una tarea sin
necesidad de devolver un valor.
Aunque esta función imprimir_mensaje no tiene una declaración return, realiza una acción
(imprimir un mensaje). Si se intentara capturar un valor devuelto por esta función, se
obtendría None.
Estos ejemplos ilustran cómo el uso de return puede variar según la necesidad de devolver
valores o no. La elección de incluir un return y qué valor devolver depende de la lógica y el
propósito específicos de cada función.