🐍Funciones
1. ¿Qué es una función?
En matemáticas, una función es una relación o asignación entre una o más entradas y un conjunto de salidas. Una función se suele representar así:
y = f(x)
Todos los lenguajes de programación modernos implementan el concepto de función. Sin embargo, en programación, las funciones son construcciones mucho más genéricas y versátiles que en la definición matemática mostrada anteriormente. Una función va a consistir en un bloque de código que encapsula una tarea específica o un grupo de tareas relacionadas. Las funciones permiten dividir programas complejos en fragmentos más pequeños y modulares.
La función que se muestra anteriormente forma parte de un conjunto de funciones que están definidas en el interprete de Python y podemos utilizar siempre que lo necesitemos.
Para utilizar estas funciones no necesitamos conocer el detalle del código fuente que la implementa, únicamente necesitamos conocer su interfaz:
Qué argumentos recibe
Qué valores devuelve
Cuando invocamos la función a través de su nombre y le proporcionamos los argumentos necesarios, el interprete de Python automáticamente recorre el código fuente que define esta función y ejecuta las tareas pertinentes sobre los argumentos proporcionados. Cuando la función termina, la ejecución vuelve a la línea de código donde se invocó la función. La función puede devolver un valor de retorno que podemos utilizar a lo largo de nuestro código.
2. Definiendo funciones personalizadas
La sintaxis utilizada para definir funciones en Python es la siguiente:
El último elemento, <sentencia(s)>
, se denomina cuerpo de la función. El cuerpo es el bloque de sentencias en Python que se ejecutará cuando se llame a la función. El cuerpo de una función de Python se define por la sangría.
La sintaxis utilizada para invocar una función es la siguiente: <nombre_funcion>([<argumentos>])
Los <argumentos>
son los valores que se pasan a la función. Se corresponden con los <parámetros>
en la definición de la función en Python.
Se pueden definir funciones que no reciban ningún argumento, pero los paréntesis siguen siendo necesarios. Tanto una definición de función como una llamada a una función deben incluir siempre paréntesis, incluso si están vacíos.
3. Argumentos de las funciones
Los argumentos que le proporcionamos a una función en Python pueden ser de diferentes tipos.
3.1 Argumentos posicionales
La forma más sencilla de pasar argumentos a una función en Python es con argumentos posicionales (también llamados argumentos requeridos). En la definición de la función, debe especificarse una lista de parámetros separada por comas dentro de los paréntesis.
Los argumentos que le proporcionamos en la invocación de la función debe respetar el orden y el número de parámetros definidos.
Los parámetros se comportan como variables que están definidas de manera local a la función (únicamente en el cuerpo de la función). Cuando se invoca la función, los argumentos que se le proporcionan se asignan a los parámetros en el orden en el que estuvieran definidos.
3.2. Argumentos de palabra clave
Otra forma de invocar una función en Python es indicando los argumentos de la forma <palabra clave>=<valor>
. En ese caso, cada <palabra clave>
debe coincidir con un parámetro en la definición de la función.
Utilizar argumentos de palabra clave, nos exime de tener que respetar el orden de los parámetros definidos en la función
Por otro lado, el número de argumentos debe seguir respetándose.
Una de las cosas interesantes que nos permite hacer Python, es combinar argumentos posicionales y de palabra clave en la misma llamada a una función. En estos casos, los argumentos posicionales deben indicarse primero.
3.3 Parámetros con valores por defecto u opcionales
Si especificamos un parámetro en la definición de una función en Python utilizando la forma <nombre>=<valor>
, entonces <valor>
se convierte en un valor por defecto para ese parámetro.
Los parámetros definidos de esta manera se denominan parámetros por defecto u opcionales.
4. Sentencia Return
Las funciones en Python pueden retornar un valor despues de haber ejecutado las sentencias de código definidas. Para devolver un valor, se debe utilizar la palabra return
dentro del cuerpo de la función.
Debemos de tener en cuenta varias cosas cuando utilizamos la palabra return
:
Cuando se ejecuta esta sentencia en Python, el intérprete termina inmediatamente la ejecución de la función y regresa a la línea de código desde dónde la hubiésemos invocado.
Si indicamos definimos la palabra
return
de la siguiente formareturn <valor>
se retornará el<valor>
especificado en la llamada a dicha función.
Si no indicamos el término
<valor>
en la sentenciareturn
se devuelve un tipo de datos conocido comoNone
Puede utilizarse la sentencia
return
para devolver varios valores utilizando la sintaxisreturn <valor1>,<valor2>,...,<valorn>
5. Docstrings
Cuando la primera declaración en el cuerpo de una función en Python es un string de la forma """texto"""
, se conoce como docstring de la función.
Los docstring se utilizan para proporcionar la documentación de una función. Puede contener el propósito de la función, los argumentos que toma, información sobre los valores de retorno, o cualquier otra información que se considere útil.
Existe un PEP (Python Enhancement Proporsal) que establece el estilo con el que deben definirse los docstrings: https://www.python.org/dev/peps/pep-0257/
Última actualización