Funciones en Python

Las funciones son bloques de código reutilizables que realizan una tarea específica. Te permiten organizar tu código, evitar repetición y hacerlo más legible.

Conceptos Básicos

1. Definir una función

Se usa la palabra clave def:

python
def nombre_funcion(parametros):
    # código de la función
    return resultado

2. Función simple sin parámetros

python
def saludar():
    print("¡Hola mundo!")

# Llamar la función
saludar()  # Output: ¡Hola mundo!

3. Función con parámetros

python
def saludar_persona(nombre):
    print(f"¡Hola {nombre}!")

saludar_persona("Ana")  # Output: ¡Hola Ana!

4. Función con retorno

python
def sumar(a, b):
    resultado = a + b
    return resultado

suma = sumar(5, 3)
print(suma)  # Output: 8

Tipos de Parámetros

Parámetros posicionales

python
def informacion_persona(nombre, edad, ciudad):
    print(f"{nombre} tiene {edad} años y vive en {ciudad}")

informacion_persona("Carlos", 25, "Madrid")

Parámetros con valores por defecto

python
def saludar(nombre, mensaje="Hola"):
    print(f"{mensaje}, {nombre}!")

saludar("María")  # Output: Hola, María!
saludar("Juan", "Buenos días")  # Output: Buenos días, Juan!

Parámetros con nombre (keyword arguments)

python
def crear_usuario(nombre, edad, email, activo=True):
    print(f"Usuario: {nombre}, Edad: {edad}, Email: {email}, Activo: {activo}")

# Diferentes formas de llamar la función
crear_usuario("Ana", 30, "ana@email.com")
crear_usuario(nombre="Pedro", email="pedro@email.com", edad=25)
crear_usuario("Luis", edad=35, activo=False, email="luis@email.com")

Número variable de argumentos

python
# *args - recibe múltiples argumentos como tupla
def sumar_todos(*args):
    total = 0
    for numero in args:
        total += numero
    return total

print(sumar_todos(1, 2, 3))  # Output: 6
print(sumar_todos(5, 10, 15, 20))  # Output: 50

# **kwargs - recibe múltiples argumentos con nombre como diccionario
def mostrar_info(**kwargs):
    for clave, valor in kwargs.items():
        print(f"{clave}: {valor}")

mostrar_info(nombre="Ana", edad=30, ciudad="Barcelona")

Ejemplos Prácticos

1. Función para calcular área

python
def calcular_area_rectangulo(largo, ancho):
    return largo * ancho

area = calcular_area_rectangulo(10, 5)
print(f"El área es: {area}")  # Output: El área es: 50

2. Función con múltiples retornos

python
def operaciones_matematicas(a, b):
    suma = a + b
    resta = a - b
    multiplicacion = a * b
    division = a / b if b != 0 else "Error: división por cero"
    return suma, resta, multiplicacion, division

resultados = operaciones_matematicas(10, 2)
print(resultados)  # Output: (12, 8, 20, 5.0)

3. Función con validación

python
def es_par(numero):
    """
    Función que verifica si un número es par
    """
    if numero % 2 == 0:
        return True
    else:
        return False

print(es_par(4))  # Output: True
print(es_par(7))  # Output: False

Documentación de Funciones

Es buena práctica documentar tus funciones:

python
def calcular_imc(peso, altura):
    """
    Calcula el Índice de Masa Corporal (IMC)
    
    Args:
        peso (float): Peso en kilogramos
        altura (float): Altura en metros
    
    Returns:
        float: Valor del IMC redondeado a 2 decimales
    """
    imc = peso / (altura ** 2)
    return round(imc, 2)

# Puedes ver la documentación con:
help(calcular_imc)

Ámbito de Variables

python
variable_global = "Soy global"

def ejemplo_ambito():
    variable_local = "Soy local"
    print(variable_local)  # Accede a variable local
    print(variable_global)  # Accede a variable global

ejemplo_ambito()
# print(variable_local)  # Esto daría error - variable_local no está definida fuera de la función

Funciones Lambda (Anónimas)

python
# Función lambda simple
cuadrado = lambda x: x ** 2
print(cuadrado(5))  # Output: 25

# Uso común con map, filter, etc.
numeros = [1, 2, 3, 4, 5]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares)  # Output: [2, 4]

cuadrados = list(map(lambda x: x ** 2, numeros))
print(cuadrados)  # Output: [1, 4, 9, 16, 25]

Buenas Prácticas

  1. Nombres descriptivos: Usa nombres que describan lo que hace la función

  2. Una función, una responsabilidad: Cada función debe hacer una sola cosa

  3. Documenta tus funciones: Usa docstrings para explicar qué hace

  4. Manténlas cortas: Si una función es muy larga, considera dividirla

  5. Usa valores por defecto cuando sea apropiado

Las funciones son fundamentales en Python 

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

Calculadora de edad

Funciones en Python: con y sin paréntesis