APUNTE N°4
PROGRAMACIÓN EN PYTHON
Lic. Sebastián ballesillos Nivel Avanzado
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES
En la presente guía trabajaremos los siguientes temas:
Concepto de funciones.
Llamada a funcion.
Retorno y envío de valores.
Parámetros, argumentos, valor y referencia.
Parámetros mutables e inmutables.
Parámetros por defecto.
Docstring.
Funciones Lambda/Anónima.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES
En Python, una función es un grupo de instrucciones
que constituyen una unidad lógica dentro del programa.
Resuelve un problema específico, y permiten la
modularidad del código.
Una función puede definir opcionalmente parámetros
de entrada, que permiten pasar argumentos a la
función en el momento de su llamada. Además, una
función también puede devolver un valor como salida.
Las funciones nos permiten dividir el trabajo que hace
un programa en tareas más pequeñas, separadas del
código principal. Ese es el concepto de función en
programación.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES
Beneficios de la programación funcional:
Facilita el trabajo en equipo: Al modularizar el código permite trabajar en unidades lógicas
separadas.
Encapsulamiento: Dividir y organizar el código en partes más sencillas que se pueden
encapsular en funciones y ser reutilizado a lo largo del proyecto.
Simplifica la lectura: El código estructurado en funciones tiene un cuerpo principal reducido y
funciones bien delimitadas.
Reutilización: El código encapsulado en una función puede utilizarse en diferentes proyectos.
Mantenimiento: El software que utiliza funciones es más fácil de mantener.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES
Las funciones permiten ejecutar código fuera del flujo normal del programa, recibiendo y
devolviendo datos
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Definición
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Definición
Elementos de una función:
Primera línea: cabecera o definición de la función:
def: palabra reservada que define una función.
nombre o identificador: se utiliza para invocar la función.
Parámetros: encerrados entre paréntesis, son opcionales.
Dos puntos: indican el cierre de la cabecera.
Cuerpo: se delimita con la indentación, y constituye el código que se encapsula en la función.
Return: Es opcional, permite a la función devolver valores al cuerpo principal del programa.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Definición
Los nombres de las funciones siguen las mismas pautas vistas para nombrar variables, aunque
utilizando verbos en infinitivo.
La función def nombre_funcion() se debe definir antes de ser invocada por primera vez. Desde el
programa principal se invoca a la función escribiendo su nombre. Una función sin parámetros,
como la del ejemplo, realiza un objetivo sin recibir información desde el programa principal.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Parámetros y Argumentos
Los parámetros son las variables que ponemos cuando se define una función. En la siguiente
función tenemos un parámetro: numero:
Los argumentos son los valores que se pasan a la función cuando ésta es invocada, “7” en el
ejemplo:
Dentro de la función, los argumentos se copian en los parámetros y son usados por ésta para
realizar la tarea.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Parámetros y Argumentos
Esta función tiene un sólo parámetro que indica hasta qué valor calculará:
En este ejemplo la función muestra un texto concatenado a un argumento pasado por parámetro:
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Parámetros
La siguiente función tiene dos parámetros, cuyos argumentos se obtienen mediante la función
input():
Los argumentos son veces y mensaje, y los parámetros son n y m. Al llamar a la función, veces se
copia en n, y mensaje se copia en m. Se mantiene el orden y la correspondencia entre
argumentos y parámetros.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Paso por valor y por referencia
Dependiendo del tipo de dato que enviemos a la función, se tienen dos comportamientos
diferentes:
Paso por valor: se crea una copia del valor de los argumentos en los respectivos parámetros.
Las modificaciones en los valores de los parámetros no afectan a las variables externas.
Paso por referencia: se pasa un puntero a la posición de memoria donde se aloja el dato, por
lo que cualquier cambio que se haga en su valor dentro de la función afecta el contenido de la
variable en el resto del programa.
En Python, los argumentos de tipos de datos simples (enteros, flotantes, cadenas, lógicos) se
pasan por valor, y los tipos de datos compuestos (listas, diccionarios, conjuntos...)se pasan por
referencia. +info
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Parámetros opcionales
En una función Python se pueden indicar una serie de parámetros opcionales con el operador =.
Son parámetros que, si no se incluyen al invocar a la función, toman ese valor por defecto.
En una función se pueden especificar tantos parámetros opcionales como se quiera. Sin embargo,
una vez que se indica uno, todos los parámetros a su derecha también deben ser opcionales.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Parámetros opcionales
En este ejemplo se utilizan argumentos opcionales para calcular la raíz de un número:
La función posee dos argumentos. El segundo es opcional. Si no se incluye el parámetro
correspondiente en la llamada, se asume que es 2, y se calcula la raíz cuadrada.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Parámetros posicionales
Al invocar una función con diferentes argumentos, los valores se asignan a los parámetros en el
mismo orden en que se indican. Sin embargo, el orden se puede cambiar si llamamos a la función
indicando el nombre de los parámetros:
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Devolución de valores
Una función puede devolver información para ser utilizada o almacenada en una variable. Se
utiliza la palabra clave return, que regresa un valor y finaliza la ejecución de la función. Si existe
código después del return, nunca será ejecutado. Puede haber más de un return por función.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Devolución de valores
La sentencia return es opcional, y puede devolver, o no, un valor. Es posible que aparezca más de
una vez dentro de una misma función.
No se puede utilizar dentro de una función una variable que tenga el mismo nombre que la
función.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Devolución de varios valores
Es posible devolver más de un valor con una sentencia return. La siguiente función
cuadrado_y_cubo() devuelve el cuadrado y el cubo de un número:
Al invocar la función utilizando el operador de asignación se debe proveer una variable para cada
valor que retorne. El orden en que se almacenan es el mismo en el que aparecen en el return.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Devolución de varios valores
Otra manera de escribir una función que devuelva varios valores es utilizar en el return un tipo de
dato compuesto, como una lista o tupla.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
FUNCIONES | Funciones que usan funciones
Es posible combinar todo lo visto
hasta ahora, incluso escribir funciones
que llamen a otras funciones.
En el ejemplo, calcular() devuelve una
lista con la tabla solicitada (o la tabla
del 1 por defecto).
La función calcular_todas() utiliza la
primera función para mostrar en la
terminal las tablas del 0 al 10:
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Ámbito y ciclo de vida de las variables
En Python las variables están definidas dentro de un ámbito que determina dónde la variable
puede ser utilizada. El ciclo de vida de una variable se refiere al tiempo en que una variable
permanece en memoria.
Los parámetros y variables definidos dentro de una función tienen cómo ámbito la propia función,
y no pueden ser utilizados fuera de ella. Su ciclo de vida dura el tiempo en que está ejecutándose
la función. Una vez que termina su ejecución, desaparecen de la memoria.
Es posible definir, dentro de una función, una variable local con el mismo nombre que tiene una
declarada en el programa principal. Pero se trata de otra variable con el mismo nombre, no
comparten su contenido.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Ámbito y ciclo de vida de las variables
Algunos ejemplos sobre el alcance de las variables:
global permite utilizar una variable de un ámbito superior dentro de otro.
Importante: Las variables que tienen un tipo de dato compuesto siempre se comportan como
variables globales (las listas, por ejemplo).
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Ámbito y ciclo de vida de las variables
Alcance y visibilidad de las variables:
Variables globales: Se pueden acceder en cualquier parte del programa.
Variables locales: Sólo son visibles en el ámbito donde fueron declaradas.
Variables libres: Son visibles en una sub-función, pero no desde el programa principal.
Buenas prácticas de programación respecto del uso de variables:
No utilizar variables globales desde dentro de una función.
No anidar definiciones de funciones.
Si se desea utilizar los valores de una variable del programa principal en una función, se debe
pasar como un parámetro.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Funciones anónimas o lambda
A diferencia de las funciones que se definen con la palabra reservada def, las funciones anónimas
se definen con la palabra reservada lambda. Su sintaxis es:
Dada su sintaxis, estas funciones se suelen llamar “funciones lambda”.
Pueden tener varios parámetros pero una única expresión.
Se suelen usar en combinación con otras funciones, generalmente como argumentos de otra
función.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Funciones anónimas o lambda
En este ejemplo, x es el parámetro y x ** 2 la expresión que se evalúa y se devuelve. Esta función
no tiene nombre y toda la definición devuelve una función que se asigna al identificador cuadrado.
Luego podemos utilizarla como una función normal.
La función map() en Python aplica una función a cada uno de los elementos de una lista:
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Funciones anónimas o lambda con map()
Una función lambda combinada con otras funciones, como map(), adquiere más potencia.
En el código anterior se define una lista, y luego se utiliza map() para aplicar una función lambda
a cada uno de sus elementos. Esto da como resultado una nueva lista, que se almacena en
cuadrados.
La ventaja de usar map() es la simplicidad con la que se puede hacer esto, sin usar bucles ni otra
estructura accesoria.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Funciones anónimas o lambda con map()
Un ejemplo más interesante es, en lugar de pasar una lista de valores, pasamos como segundo
parámetro una lista de funciones:
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Docstrings |Documentar funciones
Los comentarios delimitados por triples comillas dobles sirven para documentar funciones o
bloques de código. Son la primera sentencia de cada uno de ellos. +info
Todos los módulos deberían tener docstrings, y todas las funciones y clases exportadas por un
módulo también deberían tenerlos. En los objetos, veremos que el docstring se convierte en el
atributo especial __doc__.
PROGRAMACIÓN EN PYTHON
Nivel Avanzado
Docstrings |Documentar funciones
El siguiente es un ejemplo real de documentación mediante docstrings:
¡GRACIAS POR
SU ATENCIÓN!
Dudas / Sugerencias / PROGRAMACIÓN EN PYTHON
Reporte de errores en las diapositivas: Nivel Avanzado
[email protected]