Funciones II

Programación - Ingeniería Civil

Profesor: Santiago Quiñones

Docente Investigador

Departamento de 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

  1. Definición de función introduction
  2. La técnica que asigna cada argumento al parámetro correspondiente, es llamada paso de parámetros posicionales.
  3. La posición no es relevante aquí, cada argumento conoce su destino con base en el nombre de parámetro  utilizado.

Abrir enlace

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")

Abrir enlace

Á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.

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.

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

Módulos propios

Módulos propios

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:

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:

(x_1, y_1)
(x_2, y_2)

Agregar al módulo matematicas.py y realizar pruebas

Reto 3: Coordenadas cartesianas a polares

Escriba una función llamada car2pol que tome como argumentos las coordenadas de un punto (x,y) en el plano cartesiano. La función deberá calcular "r" y "a" a partir de "x" y "y".

Instrucciones:

- Definir la función car2pol.

- Pedir al usuario las coordenadas cartesianas (x,y) del punto.

- Utilizar la función car2pol para convertir las coordenadas cartesianas a polares.

- Imprimir los valores de r y a obtenidos.

 

arctan: La función arctan en Python es proporcionada por el módulo math y se llama atan(). Esta función devuelve el arco tangente de un número en radianes.

r = \sqrt{x^2 + y^2} \\ a = \arctan{\frac{y}{x}}
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 #Ingenieria AA24

By lsantiago

Funciones 2da parte #Ingenieria AA24

  • 131