Programación Orientada a Objetos en Python: Clases y Objetos

🐍 Python — POO Programación Orientada a Objetos en Python: Clases, Objetos y Herencia Aprende Programación Orientada a Objetos (POO) en Python desde cero. Clases, objetos, atributos, métodos, herencia y polimorfismo con ejercicios resueltos paso a paso. ⏱ 18 min de lectura 🎯 Intermedio 💻 Código ejecutable ✅ Ejercicios resueltos 📚 Contenido de esta guía ¿Qué es la POO? Crear una clase: class e __init__ Atributos y métodos ¿Qué es self? Herencia Polimorfismo Ejercicio práctico: Sistema de biblioteca 1 ¿Qué es la Programación Orientada a Objetos? La Programación Orientada a Objetos (POO) es un paradigma que organiza el código en torno a objetos : entidades que combinan datos (atributos) y comportamientos (métodos). Es la base de frameworks como Django y librerías como Pandas . 💡 Analogía del mundo real Piensa en un automóvil : tiene atributos (color, marca, velocidad) y co...

Funciones en Python: def, return y parámetros — Guía Completa

🐍 Python — Funciones

Funciones en Python: def, return y Parámetros — Guía Completa con Ejercicios

Aprende a crear funciones en Python desde cero. def, return, parámetros por defecto, *args, **kwargs, funciones lambda y recursividad con ejemplos resueltos en español.

⏱ 15 min de lectura 🎯 Todos los niveles 💻 Código ejecutable ✅ Ejercicios resueltos

1¿Qué es una función y para qué sirve?

Una función es un bloque de código con nombre que realiza una tarea específica y puede reutilizarse cuantas veces sea necesario. En lugar de repetir el mismo código, lo defines una vez y lo llamas cuando lo necesites.

Ventajas de usar funciones
  • Reutilización: escribe una vez, usa muchas veces.
  • Organización: código más limpio y fácil de leer.
  • Mantenimiento: corriges el error en un solo lugar.
  • Modularidad: divide problemas grandes en partes pequeñas.

2Definir y llamar funciones: def

La palabra clave def define una función. La indentación delimita el cuerpo de la función.

primera_funcion.py
# Estructura básica de una función
def nombre_funcion(parametro1, parametro2):
    """Docstring: descripción de la función"""
    resultado = parametro1 + parametro2
    return resultado

# Ejemplos reales

def saludar():
    print("¡Hola desde una función!")

def sumar(a, b):
    return a + b

def presentar(nombre, edad):
    print(f"Me llamo {nombre} y tengo {edad} años")

saludar()
print(sumar(10, 5))
presentar("Ana", 22)
▶ Salida
¡Hola desde una función!
15
Me llamo Ana y tengo 22 años

3Parámetros y valores de retorno

Una función puede retornar uno o varios valores con la instrucción return.

return_valores.py
# Retornar un solo valor
def area_circulo(radio):
    import math
    return math.pi * radio ** 2

# Retornar múltiples valores
def min_max(lista):
    return min(lista), max(lista)

# Retornar un diccionario
def estadisticas(numeros):
    return {
        "total": len(numeros),
        "suma": sum(numeros),
        "min": min(numeros),
        "max": max(numeros),
        "promedio": sum(numeros) / len(numeros)
    }

print(f"Área: {area_circulo(5):.2f}")
minimo, maximo = min_max([3, 1, 7, 4, 9])
print(f"Mín: {minimo}, Máx: {maximo}")
stats = estadisticas([10, 20, 30, 40, 50])
print(f"Promedio: {stats['promedio']}")
▶ Salida
Área: 78.54
Mín: 1, Máx: 9
Promedio: 30.0

4Parámetros con valores por defecto

Puedes asignar un valor por defecto a los parámetros.

parametros_default.py
def crear_perfil(nombre, edad, pais="Colombia", activo=True):
    print(f"Nombre: {nombre}")
    print(f"Edad:   {edad}")
    print(f"País:   {pais}")
    print(f"Activo: {activo}\n")

crear_perfil("Ana", 25)
crear_perfil("Luis", 30, "México")
crear_perfil(nombre="María", edad=28, activo=False, pais="Argentina")
▶ Salida
Nombre: Ana
Edad:   25
País:   Colombia
Activo: True

Nombre: Luis
Edad:   30
País:   México
Activo: True

Nombre: María
Edad:   28
País:   Argentina
Activo: False

5*args y **kwargs

Cuando no sabes cuántos argumentos recibirá una función, puedes usar *args y **kwargs.

args_kwargs.py
# *args: recibe cualquier cantidad de argumentos
def sumar_todo(*numeros):
    total = sum(numeros)
    print(f"Suma de {numeros} = {total}")

sumar_todo(1, 2)
sumar_todo(10, 20, 30, 40)
sumar_todo(5)

# **kwargs: recibe argumentos con nombre
def mostrar_info(**datos):
    print("=== Información ===")
    for clave, valor in datos.items():
        print(f"  {clave}: {valor}")

mostrar_info(nombre="Pedro", edad=29, profesion="Ingeniero")
▶ Salida
Suma de (1, 2) = 3
Suma de (10, 20, 30, 40) = 100
Suma de (5,) = 5
=== Información ===
  nombre: Pedro
  edad: 29
  profesion: Ingeniero

6Funciones lambda

Las funciones lambda son funciones anónimas de una sola línea.

funciones_lambda.py
# Lambda básico
cuadrado = lambda x: x ** 2
print(cuadrado(5))

suma = lambda a, b: a + b
print(suma(3, 7))

# Lambda con sorted()
estudiantes = [
    {"nombre": "Ana", "nota": 4.5},
    {"nombre": "Luis", "nota": 3.2},
    {"nombre": "María", "nota": 4.8}
]
por_nota = sorted(estudiantes, key=lambda e: e["nota"], reverse=True)
for e in por_nota:
    print(f"{e['nombre']:8} → {e['nota']}")

# Lambda con filter()
numeros = [1, 2, 3, 4, 5, 6, 7, 8]
pares = list(filter(lambda n: n % 2 == 0, numeros))
print("Pares:", pares)
▶ Salida
25
10
María    → 4.8
Ana      → 4.5
Luis     → 3.2
Pares: [2, 4, 6, 8]

7Funciones recursivas

Una función recursiva es aquella que se llama a sí misma.

⚠️ Regla de oro de la recursión
Toda función recursiva necesita un caso base que detenga la recursión.
recursion.py
# Factorial
def factorial(n):
    if n == 0 or n == 1:
        return 1
    return n * factorial(n - 1)

for i in range(8):
    print(f"  {i}! = {factorial(i)}")

# Fibonacci
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

print("\nSerie Fibonacci:")
serie = [fibonacci(i) for i in range(10)]
print(serie)
▶ Salida
  0! = 1
  1! = 1
  2! = 2
  3! = 6
  4! = 24
  5! = 120
  6! = 720
  7! = 5040

Serie Fibonacci:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

8🏋️ Ejercicios prácticos resueltos

📋 Ejercicio: Calculadora con funciones

Crea una calculadora completa usando funciones para cada operación, con un menú interactivo.

calculadora.py
def sumar(a, b): return a + b
def restar(a, b): return a - b
def multiplicar(a, b): return a * b
def dividir(a, b):
    if b == 0:
        return "Error: división por cero ❌"
    return a / b

operaciones = {
    "1": (sumar, "Suma"),
    "2": (restar, "Resta"),
    "3": (multiplicar, "Multiplicación"),
    "4": (dividir, "División")
}

def calculadora():
    print("=== CALCULADORA ===")
    for k, (_, nombre) in operaciones.items():
        print(f"  {k}. {nombre}")

    opcion = input("\nElige operación: ")
    if opcion not in operaciones:
        print("Opción inválida")
        return

    a = float(input("Primer número: "))
    b = float(input("Segundo número: "))

    func, nombre = operaciones[opcion]
    resultado = func(a, b)
    print(f"\n{nombre}: {a} y {b} = {resultado}")

calculadora()

¿Dominaste las funciones en Python? 🚀

Déjanos tus preguntas en los comentarios. Comparte con tus compañeros y suscríbete para más ejercicios resueltos.

Python Funciones def Python Lambda Recursión
📖 Continúa aprendiendo
  • Programación orientada a objetos en Python
  • Manejo de archivos en Python
  • Listas y diccionarios en Python

Comentarios

Entradas populares de este blog

Ejercicios de Python para Principiantes: Guía Paso a Paso con Ejemplos

Programación Orientada a Objetos en Python: Clases y Objetos

Diccionarios en Python: Guía Completa con Ejemplos