Python Básico
Domina lo esencial de Python: variables, control de flujo, funciones y manejo de datos desde cero con ejemplos prácticos. Ideal para empezar a programar.
# Lista de pares y su cuadrado
pares_cuadrados = [(x, x**2) for x in range(10) if x % 2 == 0]
print(pares_cuadrados)
# Diccionario con letras y su código ASCII
ascii_map = {letra: ord(letra) for letra in "Python"}
print(ascii_map)
—
__iter__() y __next__().
Los generadores permiten crear iteradores de forma más sencilla usando yield.
class Contador:
def __init__(self, limite):
self.limite = limite
self.valor = 0
def __iter__(self):
return self
def __next__(self):
if self.valor < self.limite:
self.valor += 1
return self.valor
else:
raise StopIteration
for numero in Contador(5):
print(numero)
# Generador equivalente
def generador_pares(n):
for i in range(n):
if i % 2 == 0:
yield i
print(list(generador_pares(10)))
—
def log(func):
def wrapper(*args, **kwargs):
print(f"Llamando a {func.__name__}")
resultado = func(*args, **kwargs)
print(f"{func.__name__} finalizó")
return resultado
return wrapper
@log
def suma(a, b):
return a + b
print(suma(5, 3))
—
with puedes manejar recursos como archivos o conexiones de forma automática.
También puedes crear tus propios context managers.
# Uso normal con archivo
with open("archivo.txt", "w") as f:
f.write("Hola mundo")
# Crear un context manager personalizado
class GestorRecursos:
def __enter__(self):
print("Recurso abierto")
return self
def __exit__(self, tipo, valor, traza):
print("Recurso cerrado")
with GestorRecursos():
print("Usando el recurso")
—
unittest y frameworks como pytest.
# test_math.py
import unittest
def suma(a, b):
return a + b
class TestMath(unittest.TestCase):
def test_suma(self):
self.assertEqual(suma(2, 3), 5)
self.assertNotEqual(suma(2, 2), 5)
if __name__ == "__main__":
unittest.main()
—
# Creación dinámica de funciones
def crear_funcion(mensaje):
def interna():
print(mensaje)
return interna
f = crear_funcion("Hola dinámico!")
f()
# type() para crear clases dinámicamente
MiClase = type("MiClase", (), {"saludo": lambda self: "Hola desde clase dinámica"})
obj = MiClase()
print(obj.saludo())
—
multiprocessing y manejar concurrencia con asyncio.
# Ejemplo con multiprocessing
from multiprocessing import Process
def tarea(nombre):
print(f"Ejecutando tarea {nombre}")
if __name__ == "__main__":
p1 = Process(target=tarea, args=("A",))
p2 = Process(target=tarea, args=("B",))
p1.start()
p2.start()
p1.join()
p2.join()
# Ejemplo con asyncio
import asyncio
async def saludar():
print("Hola async")
await asyncio.sleep(1)
print("Adiós async")
asyncio.run(saludar())
—
import time
def medir_tiempo(func):
def wrapper(*args, **kwargs):
inicio = time.time()
resultado = func(*args, **kwargs)
fin = time.time()
print(f"{func.__name__} tardó {fin - inicio:.4f} segundos")
return resultado
return wrapper
@medir_tiempo
def con_comprension(n):
return [i**2 for i in range(n)]
@medir_tiempo
def con_bucle(n):
lista = []
for i in range(n):
lista.append(i**2)
return lista
con_comprension(10**6)
con_bucle(10**6)
Domina lo esencial de Python: variables, control de flujo, funciones y manejo de datos desde cero con ejemplos prácticos. Ideal para empezar a programar.
Profundiza con listas/diccionarios, manejo de errores y POO. Ejemplos reales para llevar tus habilidades al siguiente nivel.
Decoradores, concurrencia, módulos, E/S y automatización para proyectos profesionales de alto nivel.
Pipelines de datos, ETL, y procesamiento a escala con Python/Spark. Conceptos clave y casos reales.