Funciones II
Profesor: Santiago Quiñones
Lenguaje Programación - Ingeniería Civil
Contenidos
Funciones con parámetros obligatorios y opcionales
Tipos de parámetros en una función
def es_mayor(x, y):
return x > y
Si has estado jugando con el lenguaje, sabrás que a la hora de definir una función puedes indicar una serie de parámetros.
>> es_mayor(5, 3)
True
Al invocar la función, lo haremos de la siguiente manera:
por defecto, los valores de los argumentos se asignan a los parámetros en el mismo orden en el que los pasas al llamar a la función.
Parámetros posicionales y parámetros con nombre
def introduccion(nombre, apellido):
print("Hola, mi nombre es", nombre, apellido)
# paso de parámetros posicionales
introduccion("Jorge", "Ramos")
introduccion("María", "Castillo")
introduccion("Cristina", "Guaman")
# paso de parámetros con palabra clave
introduccion(nombre = "James", apellido = "Bond")
introduccion(apellido = "Skywalker", nombre = "Luke")
1
2
3
- Definición de función introduction
- La técnica que asigna cada argumento al parámetro correspondiente, es llamada paso de parámetros posicionales.
- La posición no es relevante aquí, cada argumento conoce su destino con base en el nombre de parámetro utilizado.
Parámetros posicionales y parámetros con nombre
Parámetros opcionales
# para casos donde algunos valores de ciertos argumentos son más
# utilizados que otros
def introduccion(first_name, last_name="Peréz"):
print("Hola, mi nombre es", first_name, last_name)
introduccion("Jorge", "Castillo")
Son parámetros que se indican con un valor por defecto y si no se pasan al invocar a la función entonces toman este valor.
¿Puedes predecir la salida del programa?
¿Y? No parece haber cambiado algo, pero cuando se invoca de una manera inusual.
introduccion("Enrique")
introduccion(first_name="Guillermo")
Parámetros opcionales
Ámbito de las variables
Variables locales y globales
Buenas prácticas en el uso de funciones
1
Modularidad: Cada función debe tener una tarea específica y claramente definida.
2
Nombres descriptivos: Elige nombres significativos para tus funciones.
3
Encapsulamientos de datos: Evita variables globales y pasa los datos como argumentos.
5
Documentación: Incluye comentarios o documentación clara dentro de las funciones
4
Reutilización de código: Envuelve tareas similares en funciones reutilizables.
6
Pruebas: Realiza pruebas para verificar el comportamiento de las funciones.
Modularidad
Cada función debe tener una tarea específica y claramente definida. Evita crear funciones demasiado largas o con múltiples responsabilidades. Si una función se vuelve demasiado compleja, considera dividirla en funciones más pequeñas y coherentes.
def calcular_area_rectangulo(ancho, alto):
area = ancho * alto
return area
Nombres descriptivos
Elige nombres descriptivos y significativos para tus funciones. Esto ayudará a otros desarrolladores (o a ti mismo en el futuro) a comprender rápidamente qué hace cada función sin tener que revisar su implementación.
def calcular_promedio(lista_numeros):
suma = sum(lista_numeros)
promedio = suma / len(lista_numeros)
return promedio
Encapsulación de datos
Evita utilizar variables globales dentro de tus funciones, ya que esto puede dificultar el seguimiento y el mantenimiento del código. En su lugar, pasa los datos necesarios como argumentos de la función y devuelve los resultados necesarios utilizando la declaración return
.
def saludar(nombre):
mensaje = "¡Hola, " + nombre + "!"
return mensaje
Reutilización de código
Si encuentras que necesitas realizar una tarea similar en varios lugares de tu programa, considera envolver ese código en una función reutilizable. Esto reduce la duplicación de código y facilita los cambios y las correcciones en el futuro.
def calcular_area_triangulo(base, altura):
area = (base * altura) / 2
return area
def calcular_area_circulo(radio):
area = 3.14 * (radio ** 2)
return area
Documentación
Incluye comentarios o documentación clara dentro de tus funciones para explicar su propósito, los parámetros esperados y los valores de retorno. Esto ayuda a otros desarrolladores a utilizar correctamente tus funciones y facilita el mantenimiento del código en el futuro.
def obtener_mayor_valor(lista_numeros):
"""
Esta función devuelve el valor máximo de una lista de números.
Parámetros:
- lista_numeros: una lista de números enteros.
Retorna:
- El valor máximo de la lista.
"""
max_valor = max(lista_numeros)
return max_valor
Pruebas
Es una buena práctica escribir pruebas unitarias para tus funciones. Las pruebas unitarias te ayudan a verificar que tus funciones se comporten como se espera en diferentes escenarios. Esto proporciona una capa adicional de seguridad y facilita la detección de errores o comportamientos inesperados.
def sumar(a, b):
return a + b
# Prueba unitaria
resultado = sumar(2, 3)
print(resultado) # Output: 5
Creación de módulos
¿Qué es un módulo?
No es más que un archivo que contiene instrucciones y definiciones (variables, funciones, clases, ...)
El fichero debe tener extensión .py
y su nombre se corresponde con el nombre del módulo.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10552228/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10552231/pasted-from-clipboard.png)
Módulos
Los módulos tienen un doble propósito:
- Dividir un programa con muchas líneas de código en partes más pequeñas.
- Extraer un conjunto de definiciones que utilizas frecuentemente en tus programas para ser reutilizadas. Esto evita, por ejemplo, tener que estar copiando funciones de un programa a otro.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10553529/pasted-from-clipboard.png)
Módulos propios
Si se tienen dos archivos creados por nosotros de la siguiente manera:
- Funciones y constantes irán en el archivo modulo_funciones.py
- Se incorporan desde programa.py
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10553553/pasted-from-clipboard.png)
Módulos propios
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10553559/pasted-from-clipboard.png)
Módulos propios
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10553563/pasted-from-clipboard.png)
Problemas
Reto 1: Pitágoras
Según el teorema de Pitágoras el cuadrado de la hipotenusa es igual a la suma del cuadrado de los catetos: (C² = A² + B²). Utilizando este concepto es posible conocer de que tipo es un triángulo:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10553589/pasted-from-clipboard.png)
Crear un modulo teoremas.py con la función pitagoras que devuelva el tipo de triángulo.
Reto 2: La longitud de segmento
Dados cuatro números reales que representan coordenadas cartesianas: (x1,y1),(x2,y2). Escribe una función distancia(x1, y1, x2, y2)
para calcular la distancia entre los puntos (x1,y1) y (x2,y2). Lea cuatro números reales e imprima la distancia resultante calculada por la función.
La fórmula de distancia entre dos puntos es:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2413802/images/10553595/pasted-from-clipboard.png)
Agregar al módulo matematicas.py y realizar pruebas
Tema | URL |
---|---|
Espacios de nombres, módulos | https://j2logo.com/python/tutorial/espacios-de-nombres-modulos-y-paquetes/ |
Parámetros posicionales y parámetros con nombre en una función | https://j2logo.com/tipo-parametros-funcion-python/ |
Variables locales y globales | https://snakify.org/es/lessons/functions/ |
Funciones y parámetros | https://j2logo.com/python/tutorial/funciones-en-python/#function-params |
Importing Your Own Python Modules Properly | https://www.youtube.com/watch?v=GxCXiSkm6no&ab_channel=NeuralNine |
Referencias
Funciones 2da parte
By lsantiago
Funciones 2da parte
- 92