Python para desarrolladores C#/Java — Misión
Secciones
Ajustes de lectura
Ninguna voz para este idioma en este navegador.
Más voces
Código y términos técnicos en inglés
Desactivado: la voz de la página lo lee todo, sin pausa entre dos voces.
Ninguna voz para este idioma en este navegador.
Más voces
Más voces: Microsoft Edge ofrece voces naturales en línea, y Windows (Configuración › Hora e idioma › Voz), macOS y Android instalan otras.
Por qué aprendo esto
Sección titulada «Por qué aprendo esto»Python está por todas partes alrededor del código C# y Java en el que trabajo. Guitar Alchemist ejecuta en Python un agente de gobernanza y un servicio de grafo de conocimiento, y entrena una cabeza de enrutamiento con scikit-learn. IX entrena su autoencoder disperso con PyTorch. TARS tiene un par de docenas de herramientas en Python, y el curso de aprendizaje automático de este sitio contrasta sus resultados en Rust con scikit-learn.
Puedo leer ese código, y parece sencillo, hasta que deja de parecerlo: una lista por defecto que recuerda la llamada anterior, un módulo que falla al importarlo, una anotación de tipo que nada comprueba, una dependencia que no está declarada en ningún sitio. Este curso aprende Python tal como se escribe hoy, con sus tipos, sus herramientas y sus pruebas, en lugar de traducir C# a Python línea por línea.
Para quién es este curso
Sección titulada «Para quién es este curso»Te manejas bien con C# o Java: clases e interfaces, genéricos, colecciones y LINQ o streams, excepciones, una herramienta de build y un gestor de paquetes. Lees y escribes Python en scripts, notebooks o servicios, y quieres escribirlo como lo hacen los desarrolladores Python.
No se supone ninguna experiencia en Python. Las lecciones explican cada característica a partir de la característica de C# o Java que ya conoces, y muestran en qué se diferencian con programas que se ejecutan.
Python en una tabla
Sección titulada «Python en una tabla»| C# | Java | Python | |
|---|---|---|---|
| Entorno de ejecución | el CLR, a través de dotnet |
la JVM, a través de java |
CPython, el intérprete python, que compila a bytecode cuando se carga un archivo |
| Archivo de proyecto | .csproj |
pom.xml, build.gradle |
pyproject.toml |
| Paquetes | NuGet | Maven Central | PyPI, instalados en un entorno virtual por proyecto |
| Herramientas | el SDK de .NET | Maven, Gradle | uv, o pip y venv |
| Tipos | estáticos, verificados por csc |
estáticos, verificados por javac |
dinámicos en tiempo de ejecución; anotaciones opcionales verificadas por mypy o pyright |
| Valor ausente | null, tipos de referencia anulables |
null, Optional<T> |
None, un objeto, y X | None en las anotaciones |
| Parámetros | posicionales, con nombre, valores por defecto constantes | solo posicionales, sobrecargas | posicionales, por palabra clave, valores por defecto evaluados una sola vez, *args y **kwargs |
| Bloques | llaves | llaves | sangría |
Los datos
Sección titulada «Los datos»Las lecciones usan código real como material, clonado en una carpeta de pruebas y fijado en un commit:
- GuitarAlchemist/ga en
cc42d21: el agente de gobernanzaApps/demerzel-agent, el servicio de grafo de conocimientoApps/ga-graphiti-service, y los scripts deScripts; - GuitarAlchemist/ix en
2190c68: el código de entrenamiento decrates/ix-optick-sae; - GuitarAlchemist/tars en
26c5f67: las herramientas detools/python.
Las lecciones reducen las líneas que citan a archivos que se ejecutan por sí solos, e indican de dónde viene cada una. Lo que encontré en esos repositorios, con una forma de reproducirlo, está en el diario.
Al final de este curso, sabré
Sección titulada «Al final de este curso, sabré»- configurar un proyecto Python con uv, fijar su intérprete y sus dependencias, y ejecutarlo de la misma manera en Windows, Linux y macOS;
- explicar qué son en Python un nombre, un objeto y un import, y predecir cuándo dos nombres comparten un mismo objeto;
- elegir entre una lista, una tupla, un dict y un set, y escribir comprensiones donde C# usaría LINQ;
- diseñar firmas de funciones con parámetros solo por palabra clave y solo posicionales, y escribir decoradores que conservan la firma que envuelven;
- modelar datos con dataclasses y protocolos, y anotar el código para que mypy detecte lo que habría detectado
csc; - gestionar errores y recursos con excepciones y
with; - estructurar un paquete, probarlo con pytest y mantenerlo limpio con Ruff en CI;
- escribir iteradores, generadores y código asíncrono, y saber cuándo convienen los hilos, los procesos o
asyncio; - leer código NumPy y pandas, y servir una API con FastAPI.
| # | Lección | Ya conoces |
|---|---|---|
| 1 | Instalar y ejecutar Python | dotnet, java, NuGet, Maven y Gradle, global.json, archivos de bloqueo |
| 2 | El modelo de ejecución | tipos por referencia y por valor, == y Equals, null, ámbito de bloque, constructores estáticos |
| 3 | Tipos integrados y colecciones | List<T>, Dictionary, HashSet, arrays, LINQ, streams, decimal |
| 4 | Funciones | argumentos opcionales y con nombre, params, varargs, lambdas y closures, atributos y anotaciones |
| 5 | Clases: dataclasses, propiedades, métodos especiales, herencia y protocolos (próximamente) | clases, records, IEquatable, ToString, interfaces |
| 6 | Anotaciones de tipo: mypy y pyright, genéricos, Protocol, TypedDict, lo que nunca se comprueba en tiempo de ejecución |
genéricos, tipos de referencia anulables, interfaces |
| 7 | Errores y recursos: excepciones, with y gestores de contexto |
excepciones, using, try-with-resources |
| 8 | Módulos y paquetes: imports, __init__.py, estructura del proyecto, publicación |
ensamblados, espacios de nombres, paquetes NuGet, JAR |
| 9 | Pruebas: pytest, fixtures, parametrización, Hypothesis | xUnit, JUnit, FsCheck, jqwik |
| 10 | Iteradores y generadores: yield, itertools |
IEnumerable, yield return, streams |
| 11 | Concurrencia: el GIL y el free-threading, asyncio, concurrent.futures, multiprocessing |
Task, async/await, grupos de hilos, CompletableFuture |
| 12 | Datos y cálculo: NumPy, pandas o Polars, y una mirada honesta al ecosistema de ML | arrays, Span<T>, ML.NET |
| 13 | Herramientas de calidad: Ruff, formateo, pre-commit, CI | analizadores, dotnet format, Checkstyle, Spotless |
| 14 | Servicios: FastAPI, comparado con las minimal APIs de ASP.NET Core y con Spring WebFlux | ASP.NET Core, Spring |
| — | Diario |
El curso de aprendizaje automático y el curso sobre la IA de GA usan Python como contraste; la lección 12 enlaza a ellos en lugar de repetirlos.
Recursos
Sección titulada «Recursos»- The Python Tutorial, The Python Language Reference y The Python Standard Library, para Python 3.14
- What’s New in Python 3.14, y las Python Enhancement Proposals que citan las lecciones
- Documentación de uv, y su registro de cambios
- Documentación de mypy, documentación de pyright, documentación de pytest
- Python Packaging User Guide, para
pyproject.tomly los formatos que uv lee y escribe