Tutorial de Funciones en Python

 Tutorial de Funciones en Python

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

📋 Tabla de Contenidos

  1. ¿Qué es una función?

  2. Definir una función

  3. Parámetros y argumentos

  4. Valores de retorno

  5. Tipos de parámetros

  6. Funciones lambda

  7. Ámbito de variables

  8. Ejercicios prácticos

¿Qué es una función?

Una función es un bloque de código que:

  • Realiza una tarea específica

  • Puede recibir datos (parámetros)

  • Puede devolver resultados

  • Se puede reutilizar múltiples veces

Definir una función

python
def saludar():
    """Función que imprime un saludo"""
    print("¡Hola! Bienvenido/a")

# Llamar a la función
saludar()  # Output: ¡Hola! Bienvenido/a

Parámetros y argumentos

Parámetros simples

python
def saludar_personalizado(nombre):
    """Función con un parámetro"""
    print(f"¡Hola {nombre}!")

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

Múltiples parámetros

python
def calcular_suma(a, b):
    """Función con dos parámetros"""
    resultado = a + b
    print(f"La suma de {a} + {b} = {resultado}")

calcular_suma(5, 3)  # Output: La suma de 5 + 3 = 8

Valores de retorno

python
def sumar(a, b):
    """Función que retorna un valor"""
    return a + b

resultado = sumar(10, 5)
print(resultado)  # Output: 15

# También puedes usar return múltiple
def operaciones_basicas(a, b):
    """Función que retorna múltiples valores"""
    suma = a + b
    resta = a - b
    multiplicacion = a * b
    division = a / b
    return suma, resta, multiplicacion, division

s, r, m, d = operaciones_basicas(10, 2)
print(f"Suma: {s}, Resta: {r}, Multiplicación: {m}, División: {d}")

Tipos de parámetros

Parámetros por defecto

python
def mostrar_info(nombre, edad=25, ciudad="Madrid"):
    """Función con parámetros por defecto"""
    print(f"{nombre} tiene {edad} años y vive en {ciudad}")

mostrar_info("Carlos")  # Usa valores por defecto
mostrar_info("Laura", 30, "Barcelona")  # Sobrescribe valores

Argumentos con nombre (keyword arguments)

python
def crear_persona(nombre, apellido, edad):
    """Función que usa argumentos con nombre"""
    print(f"Persona: {nombre} {apellido}, {edad} años")

# Diferentes formas de llamar la función
crear_persona("Ana", "García", 25)
crear_persona(nombre="Ana", apellido="García", edad=25)
crear_persona(edad=25, nombre="Ana", apellido="García")

Número variable de argumentos

python
def sumar_numeros(*args):
    """Función que acepta cualquier número de argumentos"""
    total = 0
    for numero in args:
        total += numero
    return total

print(sumar_numeros(1, 2, 3))  # Output: 6
print(sumar_numeros(1, 2, 3, 4, 5))  # Output: 15

def mostrar_info(**kwargs):
    """Función que acepta argumentos con nombre variables"""
    for clave, valor in kwargs.items():
        print(f"{clave}: {valor}")

mostrar_info(nombre="Juan", edad=30, ciudad="París")

Funciones lambda

Son funciones anónimas de una sola línea:

python
# Función normal
def cuadrado(x):
    return x ** 2

# Equivalente con lambda
cuadrado_lambda = lambda x: x ** 2

print(cuadrado(5))  # Output: 25
print(cuadrado_lambda(5))  # Output: 25

# Uso común con map, filter, sorted
numeros = [1, 2, 3, 4, 5]

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

# Filtrar números pares
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares)  # Output: [2, 4]

# Ordenar por criterio personalizado
personas = [("Ana", 25), ("Juan", 30), ("Maria", 20)]
ordenado_edad = sorted(personas, key=lambda x: x[1])
print(ordenado_edad)  # Output: [('Maria', 20), ('Ana', 25), ('Juan', 30)]

Á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
    
    # Para modificar una variable global
    global variable_global
    variable_global = "Modificada"

ejemplo_ambito()
print(variable_global)  # Output: Modificada

Ejercicios prácticos

Ejercicio 1: Calculadora básica

python
def calculadora(a, b, operacion):
    """
    Realiza operaciones básicas entre dos números
    operacion: 'suma', 'resta', 'multiplicacion', 'division'
    """
    if operacion == 'suma':
        return a + b
    elif operacion == 'resta':
        return a - b
    elif operacion == 'multiplicacion':
        return a * b
    elif operacion == 'division':
        if b != 0:
            return a / b
        else:
            return "Error: División por cero"
    else:
        return "Operación no válida"

# Pruebas
print(calculadora(10, 5, 'suma'))  # Output: 15
print(calculadora(10, 5, 'division'))  # Output: 2.0

Ejercicio 2: Validar email

python
def validar_email(email):
    """Valida si un email tiene formato correcto"""
    if '@' in email and '.' in email:
        return True
    return False

# Pruebas
print(validar_email("usuario@example.com"))  # Output: True
print(validar_email("usuarioexample.com"))   # Output: False

Ejercicio 3: Generador de contraseñas

python
import random
import string

def generar_contraseña(longitud=8):
    """Genera una contraseña aleatoria"""
    caracteres = string.ascii_letters + string.digits + string.punctuation
    contraseña = ''.join(random.choice(caracteres) for _ in range(longitud))
    return contraseña

# Pruebas
print(generar_contraseña())  # Ejemplo: aB3#fG7*
print(generar_contraseña(12))  # Contraseña de 12 caracteres

Ejercicio 4: Contador de palabras

python
def contar_palabras(texto):
    """Cuenta las palabras en un texto"""
    palabras = texto.split()
    return len(palabras)

def estadisticas_texto(texto):
    """Devuelve estadísticas del texto"""
    palabras = texto.split()
    numero_palabras = len(palabras)
    numero_caracteres = len(texto)
    longitud_promedio = sum(len(palabra) for palabra in palabras) / numero_palabras
    
    return {
        'palabras': numero_palabras,
        'caracteres': numero_caracteres,
        'longitud_promedio': round(longitud_promedio, 2)
    }

# Prueba
texto = "Python es un lenguaje de programación versátil"
print(estadisticas_texto(texto))

🎯 Consejos finales

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

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

  3. Documentación: Usa docstrings para explicar el propósito de la función

  4. Parámetros razonables: No uses demasiados parámetros (máximo 3-4 recomendado)

  5. Manejo de errores: Considera usar try-except para manejar posibles errores

¡Ahora estás listo para crear tus propias funciones en Python! 

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

4 tipos de colecciones de datos más

Calculadora de edad