¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Curso de programación desde cero con Python
El curso estará orientado a personas sin experiencia previa en programación. Por tanto, comenzaremos por aprender a pensar y razonar como programadores, antes de escribir código Python.
Seguiremos esta secuencia de aprendizaje:
Comprender → observar → predecir → ejecutar → modificar → crear → revisar.
Índice
Bloque I. Empezar a programar
Módulo 1. Introducción a la programación y pensamiento computacional
- Qué es programar y qué problemas permite resolver.
- Algoritmos e instrucciones ordenadas.
- Descomposición de problemas.
- Pensamiento lógico, patrones y abstracción.
- Pseudocódigo y diagramas de flujo.
- Predicción de resultados.
- Errores como parte del aprendizaje.
Módulo 2. Preparación del entorno
- Qué es Python y cómo se ejecuta.
- Instalación en Windows y Linux.
- Editores de código e IDE.
- Archivos .py y organización del trabajo.
- Primer programa.
- Ejecución desde el editor y la terminal.
- Comandos básicos de terminal.
- Problemas habituales de instalación.
Módulo 3. Cómo leer y escribir código
- Instrucciones, expresiones y sintaxis.
- Orden de ejecución.
- Comentarios e indentación.
- Errores de sintaxis.
- Interpretación de mensajes de error.
- Modificación de programas existentes.
- Convenciones de legibilidad.
Bloque II. Fundamentos de Python
Módulo 4. Variables, tipos de datos y operadores
- Variables y asignación.
- Nombres significativos.
- Números enteros y decimales.
- Booleanos, texto y None.
- Tipado dinámico y objetos.
- Conversión de tipos.
- Operadores y prioridades.
- Igualdad, identidad y pertenencia.
- Errores de tipos y precisión numérica.
Módulo 5. Entrada, salida y cadenas de texto
- print() e input().
- Conversión y validación de datos.
- Cadenas y concatenación.
- Índices y segmentación.
- Métodos de texto.
- f-strings.
- Caracteres especiales, Unicode y UTF-8.
- Interacción clara con el usuario.
Módulo 6. Condiciones y toma de decisiones
- Condiciones.
- if, elif y else.
- Condiciones compuestas.
- Valores verdaderos y falsos.
- Condiciones anidadas.
- Expresiones condicionales.
- match y case.
- Casos límite y errores lógicos.
Módulo 7. Bucles y repetición
- Repetición de instrucciones.
- while y for.
- range().
- Contadores y acumuladores.
- break y continue.
- Bucles anidados.
- Cláusula else de los bucles.
- Bucles infinitos.
- Elección de estructuras de repetición.
Módulo 8. Colecciones de datos
- Concepto de colección.
- Listas y sus operaciones.
- Índices, segmentación y mutabilidad.
- Tuplas y desempaquetado.
- Conjuntos.
- Diccionarios.
- Recorrido de colecciones.
- Estructuras anidadas.
- Referencias y copias.
- Comprensiones.
- Selección de estructuras apropiadas.
Bloque III. Resolver problemas con programas propios
Módulo 9. Funciones y descomposición del código
- Definición y llamada de funciones.
- Parámetros y argumentos.
- Valores de retorno.
- Diferencia entre imprimir y devolver.
- Argumentos posicionales y nominales.
- Valores predeterminados.
- Ámbito de variables.
- Funciones pequeñas y reutilizables.
- Funciones puras y efectos secundarios.
- Docstrings.
*args,**kwargsy funciones lambda.
Módulo 10. Resolver problemas de principio a fin
- Requisitos y definición del problema.
- Entradas, procesamiento y resultados.
- Diseño de algoritmos.
- Descomposición en funciones.
- Implementación incremental.
- Pruebas y casos límite.
- Depuración.
- Simplificación de soluciones.
- Justificación de decisiones.
Módulo 11. Errores, excepciones y depuración
- Errores de sintaxis, ejecución y lógica.
- Tracebacks.
- Excepciones frecuentes.
- try, except, else y finally.
- raise.
- Captura específica de excepciones.
- Depuración paso a paso.
- Mensajes de error.
- logging.
Bloque IV. Construir programas organizados
Módulo 12. Módulos, paquetes e importaciones
- Biblioteca estándar.
- Importaciones.
- Creación de módulos.
- Organización en varios archivos.
- Paquetes.
- Importaciones absolutas y relativas.
__main__.- Ejecución mediante la terminal.
- Conflictos de nombres e importaciones circulares.
Módulo 13. Archivos y persistencia
- Rutas y localización de archivos.
- Lectura y escritura.
- Gestores de contexto.
- Codificación de caracteres.
- pathlib.
- Diferencias de rutas entre Windows y Linux.
- CSV y JSON.
- Persistencia de datos.
- Errores de archivos y permisos.
Módulo 14. Programación orientada a objetos
- Clases e instancias.
- Atributos y métodos.
selfe__init__().- Atributos de instancia y clase.
- Encapsulación.
- property.
- Herencia y composición.
- Polimorfismo.
- Métodos especiales.
- dataclasses.
- Cuándo utilizar clases.
Bloque V. Python idiomático y buenas prácticas
Módulo 15. Rasgos distintivos e idiomáticos de Python
- Zen de Python y código Pythonic.
- Indentación significativa.
- Asignación múltiple y desempaquetado.
- Iterables e iteradores.
- Generadores y yield.
- Comprensiones.
- Gestores de contexto.
- Funciones como objetos y decoradores.
- Operadores y métodos especiales.
- Identidad, mutabilidad y referencias.
- Particularidades de los argumentos.
- Comparación con otros lenguajes.
Módulo 16. Código legible y mantenible
- PEP 8 y PEP 257.
- Nombres descriptivos.
- Responsabilidades bien definidas.
- Evitar duplicación y complejidad.
- Constantes y valores mágicos.
- Comentarios útiles.
- DRY y KISS.
- Separación de responsabilidades y SOLID.
- Refactorización.
- Ruff.
- Revisiones de código.
Módulo 17. Pruebas y fiabilidad
- Pruebas manuales y automatizadas.
- Pruebas unitarias.
- unittest y pytest.
- Casos normales, extremos e inválidos.
- Pruebas de funciones y dependencias.
- Regresión.
- Cobertura.
- Integración de pruebas en el desarrollo.
Módulo 18. Tipado y documentación
- Anotaciones de tipos.
- Tipado de funciones y colecciones.
- Tipos opcionales y None.
- typing.
- Comprobación estática.
- Diferencia entre anotaciones y validación en ejecución.
- Docstrings, README y documentación de proyectos.
- Consulta de la documentación oficial.
Bloque VI. Herramientas y entorno profesional
Módulo 19. Terminal, Git y gestión de proyectos
- Terminal en Windows y Linux.
- Argumentos de línea de comandos.
- Git.
- Repositorios, cambios, commits y ramas.
.gitignore.- Entornos virtuales con
venv. pipy dependencias.requirements.txt.pyproject.toml.- Estructura de proyectos.
- Reproducibilidad y portabilidad.
Módulo 20. Biblioteca estándar y aplicaciones útiles
- Biblioteca estándar.
- datetime.
- Matemáticas y estadísticas.
- Valores aleatorios.
- argparse.
- Variables de entorno.
- Archivos y directorios.
- Expresiones regulares.
- HTTP y APIs.
- SQLite.
- Seguridad básica.
Bloque VII. Consolidación y especialización futura
Módulo 21. Comparación con otros lenguajes y portabilidad
- Tipado dinámico y estático.
- Sintaxis e indentación.
- Objetos y memoria.
- Colecciones.
- Iteradores, generadores y comprensiones.
- Excepciones y gestores de contexto.
- Convenciones y restricciones.
- Comparación con Java, C, JavaScript y C#.
- Portabilidad entre Windows y Linux.
- Elección de lenguaje según el problema.
Módulo 22. Proyecto final integrador
- Definición de requisitos.
- Diseño del algoritmo.
- Elección de estructuras de datos.
- Funciones y módulos.
- Entrada, salida y persistencia.
- Validación y tratamiento de errores.
- Pruebas automatizadas.
- Refactorización.
- Documentación y Git.
- Ejecución en Windows y Linux.
- Presentación y evaluación.
- Plan de aprendizaje posterior.
Bloque VIII optativo de ampliación
Módulo 23. Concurrencia y asincronía
Módulo 24. Patrones de diseño en Python
Módulo 25. Rendimiento y profiling
Módulo 26. Publicación y CI/CD
Recursos
- Documentación oficial de Python 3.15 (inglés): https://docs.python.org/3.15/
- Referencia del lenguaje: https://docs.python.org/3.15/reference/index.html
- Referencia de la biblioteca estándar: https://docs.python.org/3.15/library/index.html
- Tutorial oficial: https://docs.python.org/3.15/tutorial/index.html
- Línea de comandos y entorno de Python: https://docs.python.org/3/using/cmdline.html
[BUENA PRÁCTICA] La documentación oficial permite cambiar de versión desde el selector de la esquina superior izquierda. Si trabajas con una versión distinta de 3.15 (por ejemplo, 3.12 o 3.13), asegúrate de consultar la documentación de tu versión, no la más reciente.
2. PEPs fundamentales
Las PEPs (Python Enhancement Proposals) son los documentos que definen el lenguaje, sus convenciones y sus procesos. Estas son las que se han citado en el curso:
2.1. Estilo y documentación
- PEP 8 – Style Guide for Python Code: https://peps.python.org/pep-0008/ - PEP 257 – Docstring Conventions: https://peps.python.org/pep-0257/ - PEP 20 – The Zen of Python: https://peps.python.org/pep-0020/
2.2. Sistema de tipos
- PEP 484 – Type Hints: https://peps.python.org/pep-0484/
- PEP 557 – Data Classes: https://peps.python.org/pep-0557/
- PEP 649 – Deferred Evaluation Of Annotations: https://peps.python.org/pep-0649/
- PEP 661 – Sentinel Values: https://peps.python.org/pep-0661/
- PEP 747 – Annotating Type Forms (TypeForm): https://peps.python.org/pep-0747/
- PEP 781 – Make TYPE_CHECKING a built-in constant: https://peps.python.org/pep-0781/
2.3. Novedades de Python 3.15
- PEP 686 – Make UTF-8 mode default: https://peps.python.org/pep-0686/
- PEP 703 – Making the Global Interpreter Lock Optional (free-threading): https://peps.python.org/pep-0703/
- PEP 798 – Unpacking in Comprehensions: https://peps.python.org/pep-0798/
- PEP 810 – Explicit lazy imports: https://peps.python.org/pep-0810/
- PEP 814 – Add frozendict built-in type: https://peps.python.org/pep-0814/
2.4. Empaquetado y estructura de proyectos
- PEP 518 – Specifying Minimum Build System Requirements (pyproject.toml): https://peps.python.org/pep-0518/
- PEP 621 – Storing project metadata in pyproject.toml: https://peps.python.org/pep-0621/
- PEP 249 – Python Database API Specification v2.0: https://peps.python.org/pep-0249/
2.5. Otros patrones y protocolos
- PEP 634 – Structural Pattern Matching (match/case): https://peps.python.org/pep-0634/
- PEP 654 – Exception Groups and except*: https://peps.python.org/pep-0654/
- PEP 791 – math.integer: https://peps.python.org/pep-0791/
3. Biblioteca estándar por módulos
Cada módulo de la biblioteca estándar tiene su propia página de documentación. Estas son las que se han utilizado en el curso:
3.1. Fundamentos del lenguaje
- Tipos incorporados (str, list, dict, set, tuple, range, etc.): https://docs.python.org/3.15/library/stdtypes.html
- Funciones incorporadas (print, input, len, type, isinstance, breakpoint, property, etc.): https://docs.python.org/3.15/library/functions.html
- Mini-lenguaje de formato (f-strings): https://docs.python.org/3.15/library/string.html#format-specification-mini-language
3.2. Módulos de uso general
- datetime – Fechas y horas: https://docs.python.org/3.15/library/datetime.html
- statistics – Funciones estadísticas: https://docs.python.org/3.15/library/statistics.html
- math – Funciones matemáticas: https://docs.python.org/3.15/library/math.html
- math.integer – Funciones matemáticas para enteros (novedad 3.15): https://docs.python.org/3.15/library/math.integer.html
- random – Números pseudoaleatorios: https://docs.python.org/3.15/library/random.html
- secrets – Números aleatorios seguros: https://docs.python.org/3.15/library/secrets.html
- argparse – Interfaz de línea de comandos: https://docs.python.org/3.15/library/argparse.html
- os – Interfaz con el sistema operativo (os.environ): https://docs.python.org/3.15/library/os.html
- pathlib – Rutas orientadas a objetos: https://docs.python.org/3.15/library/pathlib.html
- re – Expresiones regulares: https://docs.python.org/3.15/library/re.html
- urllib.request – Apertura de URLs: https://docs.python.org/3.15/library/urllib.request.html
- sqlite3 – Base de datos SQLite: https://docs.python.org/3.15/library/sqlite3.html
- csv – Lectura y escritura de CSV: https://docs.python.org/3.15/library/csv.html
- json – Codificación y decodificación JSON: https://docs.python.org/3.15/library/json.html
- shelve – Persistencia de objetos Python: https://docs.python.org/3.15/library/shelve.html
- copy – Copia superficial y profunda: https://docs.python.org/3.15/library/copy.html
- logging – Registro de eventos: https://docs.python.org/3.15/library/logging.html
- dataclasses – Clases de datos: https://docs.python.org/3.15/library/dataclasses.html
- typing – Anotaciones de tipos: https://docs.python.org/3.15/library/typing.html
- unittest – Marco de pruebas unitarias: https://docs.python.org/3.15/library/unittest.html
- unittest.mock – Objetos simulados para pruebas: https://docs.python.org/3.15/library/unittest.mock.html
- pdb – Depurador de Python: https://docs.python.org/3.15/library/pdb.html
- traceback – Formato de los mensajes de error: https://docs.python.org/3.15/library/traceback.html
- __main__ – Entorno de código de máximo nivel: https://docs.python.org/3.15/library/__main__.html
- Advertencias de seguridad (Security Considerations): https://docs.python.org/3.15/library/security_warnings.html
[AMPLIACIÓN] Para explorar la biblioteca estándar completa, el índice alfabético es la mejor herramienta: https://docs.python.org/3.15/py-modindex.html. También puedes usarhelp()en el intérprete opydocdesde la terminal.
4. Referencia del lenguaje y modelo de datos
- Modelo de datos (métodos especiales, protocolos): https://docs.python.org/3.15/reference/datamodel.html
- Expresiones (operadores, comprensiones, condicionales): https://docs.python.org/3.15/reference/expressions.html
- Sentencias compuestas (if, for, while, try, match, with): https://docs.python.org/3.15/reference/compound_stmts.html
- Sistema de importación: https://docs.python.org/3.15/reference/import.html
- Prioridad de operadores: https://docs.python.org/3.15/reference/expressions.html#operator-precedence
5. Herramientas de desarrollo y calidad
5.1. Ruff (linter y formateador)
- Documentación oficial: https://docs.astral.sh/ruff/
- Configuración: https://docs.astral.sh/ruff/configuration/
- Reglas disponibles: https://docs.astral.sh/ruff/rules/
- Regla RUF017 (desempaquetado en comprensiones): https://docs.astral.sh/ruff/rules/unpacked-list-comprehension/
5.2. uv (gestor de paquetes y proyectos)
- Documentación oficial: https://docs.astral.sh/uv/ - Primeros pasos: https://docs.astral.sh/uv/getting-started/ - Guía de proyectos: https://docs.astral.sh/uv/guides/projects/ - Integración con GitHub Actions: https://docs.astral.sh/uv/guides/integration/github/
5.3. pytest (marco de pruebas)
- Documentación oficial: https://docs.pytest.org/ - Primeros pasos: https://docs.pytest.org/en/stable/getting-started.html - Referencia de la API: https://docs.pytest.org/en/stable/reference/reference.html - Changelog (novedades de la versión 9.2): https://docs.pytest.org/en/stable/changelog.html
5.4. coverage.py (cobertura de pruebas)
- Documentación oficial: https://coverage.readthedocs.io/ - Uso desde la línea de comandos: https://coverage.readthedocs.io/en/stable/cmdline.html - Configuración: https://coverage.readthedocs.io/en/stable/config.html - pytest-cov (plugin de integración): https://pytest-cov.readthedocs.io/
5.5. mypy (comprobación estática de tipos)
- Sitio oficial: https://www.mypy-lang.org/ - Documentación: https://mypy.readthedocs.io/ - Chuleta de tipos (cheat sheet): https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html - Blog de mypy (novedades de versiones 2.2, 2.3, 2.4): https://mypy-lang.blogspot.com/
6. Control de versiones, terminal y empaquetado
- Pro Git (libro gratuito en español): https://git-scm.com/book/es/v2
venv– Creación de entornos virtuales: https://docs.python.org/3.15/library/venv.htmlpip– Instalador de paquetes: https://pip.pypa.io/- Real Python (tutoriales y artículos): https://realpython.com/
- Python Weekly (boletín de novedades): https://www.pythonweekly.com/
- PyCoder's Weekly (boletín): https://pycoders.com/
- Awesome Python (lista curada de bibliotecas y recursos): https://awesome-python.com/
- Python Discourse (foro oficial de la comunidad): https://discuss.python.org/
