(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)
FUNCIONES
Definición, argumentos y retorno de valores.

Definición de una Función
Declaración:
La estructura básica de una función en Python es la siguiente:
# La función se define con def y comienza luego de los “:”
def saludar():
print("Hola, ¡bienvenido!")
Llamando a una Función
Para ejecutar una función, simplemente debemos “llamarla” (invocarla) por su nombre.
Es importante recordar que la función debe ser definida antes de invocarla por primera vez.
Código:
def saludar():
print("Hola, ¡bienvenido!")
saludar() # <-- Aquí invocamos a la función “saludar()”
Salida por pantalla:
Hola, ¡bienvenido!
Parámetros y argumentos
Los parámetros son las variables que se definen en la declaración de una función y actúan como recipientes para los valores que recibirá la función.
Los argumentos son los valores reales que se pasan a la función cuando se la invoca.
En la función sumar(a, b), a y b son parámetros. Cuando llamamos a la función, por ejemplo, con sumar(5, 3), 5 y 3 son los argumentos que se asignan a los parámetros a y b respectivamente. La función entonces opera con estos valores.
Código:
def sumar(a, b):
resultado = a + b
print("El resultado es:", resultado)
sumar(8, 4)
Salida por pantalla:
El resultado es: 12
Tipos de argumentos
La flexibilidad de las funciones en Python se potencia gracias a sus argumentos. Estos no se limitan a tipos de datos numéricos; se pueden pasar cadenas de texto, listas, diccionarios, y cualquier otro tipo de objeto soportado por Python.
Esta capacidad de aceptar diversos tipos de datos hace que las funciones sean mucho más dinámicas y reutilizables, adaptándose a una amplia gama de situaciones y tareas.
Código:
def saludar(nombre):
print("Hola", nombre)
saludar("Santino")
saludar("Agustín")
Salida por pantalla:
Hola Santino Hola Agustín
Argumentos por defecto
Las funciones en Python se vuelven más versátiles gracias a la posibilidad de definir valores por defecto para sus parámetros. Esto se logra asignando un valor directamente al parámetro en la definición de la función.
Si al llamar a la función no se proporciona un valor para ese parámetro, se utilizará el valor por defecto.
Código:
def saludar(nombre="invitado"):
print("Hola", nombre)
saludar() # Usa el valor por defecto
saludar("Maria") # Sobrescribe el valor por defecto
Salida por pantalla:
Hola invitado Hola Maria
Argumentos nombrados
Es posible invocar funciones especificando el nombre del parámetro al que se asigna cada argumento.
Esto ofrece dos ventajas: permite modificar el orden de los argumentos sin afectar el resultado y, al ser más explícito, mejora la legibilidad y comprensión del código.
Código:
def sumar(a, b):
resultado = a + b
print("El resultado es:", resultado)
sumar(b=10, a=5)
Salida por pantalla:
El resultado es: 15
Funciones que devuelven valores
Las funciones en Python pueden devolver valores utilizando la instrucción return, aumentando significativamente su utilidad y flexibilidad.
Return indica que la función ha completado su tarea y proporciona un resultado al código que la llamó. Este valor devuelto puede ser utilizado posteriormente en otras partes del programa, permitiendo una manipulación y procesamiento más complejos.
Por ejemplo, una función que suma dos números y sólo imprime el resultado con print() limita su uso; al usar return, el resultado de la suma se puede almacenar en una variable y utilizarse en cálculos posteriores o en otras partes del código, permitiendo un flujo de información más eficiente y versátil.
Código:
def sumar(a, b):
resultado = a + b
return resultado
total = sumar(15, 6)
print("El total es:", total)
Salida por pantalla:
El total es: 21
Funciones que llaman a otras
Las funciones en Python pueden llamar a otras funciones. Esta capacidad es fundamental para la programación modular, ya que permite descomponer tareas complejas en subtareas más sencillas y manejables. Además, fomenta la reutilización del código: en vez de repetir el mismo código varias veces, se pueden reutilizar funciones ya existentes para resolver partes de un problema mayor.
Código:
def calcular_area_rectangulo(base, altura):
"""Calcula el área de un rectángulo."""
return base * altura
def calcular_area_total(largo, ancho, alto):
"""Calcula el área total de un prisma rectangular."""
area_base = calcular_area_rectangulo(largo, ancho) # Llama a otra función
area_lateral = 2 * (largo * alto + ancho * alto)
area_total = 2 * area_base + area_lateral
return area_total
# Ejemplo de uso
largo = 5
ancho = 3
alto = 2
area = calcular_area_total(largo, ancho, alto)
print(f"El área total del prisma es: {area}")
Salida por pantalla:
El área total del prisma es: 62
Alcance de las variables
El alcance (o ámbito) de una variable define dónde en tu código es accesible. En Python, las variables definidas dentro de una función tienen alcance local: solo existen y son accesibles dentro de la función donde se definen.
Una vez que la función termina su ejecución, estas variables son destruidas y dejan de existir. Por lo tanto, no puedes acceder a una variable local desde fuera de la función donde fue creada.
Código:
def saludar(): mensaje = "Hola, ¿cómo estás?" print(mensaje) saludar() print(mensaje) # Esto va a dar un error.
Salida por pantalla:
print(mensaje) # Esto va a dar un error.
^^^^^^^
NameError: name 'mensaje' is not defined
Las variables definidas fuera de cualquier función tienen alcance global. Esto significa que son accesibles desde cualquier parte del programa, tanto dentro como fuera de las funciones.
Código:
mensaje_global = "Hola, ¿cómo estás?" def saludar(): print(mensaje_global) saludar() print(mensaje_global) # Esto funciona bien.
Salida por pantalla:
Hola, ¿cómo estás? Hola, ¿cómo estás?
TAREA PARA EL HOGAR
Este ejercicio te ayudará a practicar la creación y uso de funciones en Python para resolver un problema del mundo real: calcular descuentos.
Desarrollá un programa que a partir del precio original de un producto y un porcentaje de descuento, calcule y muestre el precio final. Esto implica:
- Crear una función: La misma debe tomar como entrada el precio original (un número) y el porcentaje de descuento (un número entre 0 y 100). Esta función debe calcular el precio final después de aplicar el descuento y devolverlo como resultado.
- Obtener datos del usuario: Tu programa solicitará al usuario que ingrese el precio original del producto y el porcentaje de descuento a aplicar. (validar la entrada del usuario para evitar errores, por ejemplo, que el porcentaje esté dentro del rango válido).
- Mostrar el resultado: Finalmente, tu programa debe mostrar claramente el precio final calculado por la función, utilizando la información ingresada por el usuario.
Recordá que la fórmula para calcular el precio final con descuento es:
precio_final = precio_original * (1 – descuento/100)
