Python pour développeurs C#/Java — Mission
Sections
Réglages de lecture
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
Code et termes techniques en anglais
Désactivé : la voix de la page lit tout, sans pause entre deux voix.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
D’autres voix : Microsoft Edge propose des voix naturelles en ligne, et Windows (Paramètres › Heure et langue › Voix), macOS et Android en installent d’autres.
Pourquoi j’apprends ça
Section intitulée « Pourquoi j’apprends ça »Python est partout autour du code C# et Java sur lequel je travaille. Guitar Alchemist fait tourner un agent de gouvernance et un service de graphe de connaissances en Python, et entraîne une tête de routage avec scikit-learn. IX entraîne son autoencodeur parcimonieux avec PyTorch. TARS compte deux douzaines d’outils Python, et le cours d’apprentissage automatique de ce site vérifie ses résultats Rust avec scikit-learn.
Je sais lire ce code, et il paraît simple, jusqu’au moment où il ne l’est plus : une liste par défaut qui se souvient de l’appel précédent, un module qui échoue quand on l’importe, une annotation de type que rien ne vérifie, une dépendance déclarée nulle part. Ce cours apprend Python tel qu’on l’écrit aujourd’hui, avec ses types, ses outils et ses tests, au lieu d’y traduire du C# ligne par ligne.
À qui s’adresse ce cours
Section intitulée « À qui s’adresse ce cours »Tu es à l’aise avec C# ou Java : classes et interfaces, génériques, collections et LINQ ou streams, exceptions, un outil de build et un gestionnaire de packages. Tu lis et écris du Python dans des scripts, des notebooks ou des services, et tu veux l’écrire comme le font les développeurs Python.
Aucune expérience de Python n’est supposée. Les leçons expliquent chaque fonctionnalité à partir de celle de C# ou de Java que tu connais déjà, et montrent où les deux diffèrent avec des programmes qui s’exécutent.
Python en un tableau
Section intitulée « Python en un tableau »| C# | Java | Python | |
|---|---|---|---|
| Environnement d’exécution | le CLR, via dotnet |
la JVM, via java |
CPython, l’interpréteur python, qui compile en bytecode au chargement d’un fichier |
| Fichier de projet | .csproj |
pom.xml, build.gradle |
pyproject.toml |
| Packages | NuGet | Maven Central | PyPI, installés dans un environnement virtuel par projet |
| Outillage | le SDK .NET | Maven, Gradle | uv, ou pip et venv |
| Types | statiques, vérifiés par csc |
statiques, vérifiés par javac |
dynamiques à l’exécution ; annotations optionnelles vérifiées par mypy ou pyright |
| Valeur absente | null, types référence nullables |
null, Optional<T> |
None, un objet, et X | None dans les annotations |
| Paramètres | positionnels, nommés, valeurs par défaut constantes | positionnels seulement, surcharges | positionnels, nommés, valeurs par défaut évaluées une seule fois, *args et **kwargs |
| Blocs | accolades | accolades | indentation |
Les données
Section intitulée « Les données »Les leçons prennent du vrai code comme matériau, cloné dans un dossier de travail et épinglé sur un commit :
- GuitarAlchemist/ga au commit
cc42d21: l’agent de gouvernanceApps/demerzel-agent, le service de graphe de connaissancesApps/ga-graphiti-service, et les scripts deScripts; - GuitarAlchemist/ix au commit
2190c68: le code d’entraînement decrates/ix-optick-sae; - GuitarAlchemist/tars au commit
26c5f67: les outils detools/python.
Les leçons réduisent les lignes qu’elles citent à des fichiers qui s’exécutent seuls, et indiquent d’où vient chacune. Ce que j’ai trouvé dans ces dépôts, avec un moyen de le reproduire, se trouve dans le journal.
À la fin de ce cours, je saurai
Section intitulée « À la fin de ce cours, je saurai »- mettre en place un projet Python avec uv, fixer son interpréteur et ses dépendances, et l’exécuter de la même façon sous Windows, Linux et macOS ;
- expliquer ce que sont un nom, un objet et un import en Python, et prédire quand deux noms partagent un même objet ;
- choisir entre une liste, un tuple, un dict et un set, et écrire des compréhensions là où C# utiliserait LINQ ;
- concevoir des signatures de fonctions avec des paramètres keyword-only et positional-only, et écrire des décorateurs qui conservent la signature qu’ils enveloppent ;
- modéliser des données avec des dataclasses et des protocoles, et annoter le code pour que mypy détecte ce que
cscaurait détecté ; - gérer les erreurs et les ressources avec les exceptions et
with; - structurer un package, le tester avec pytest, et le garder propre avec Ruff en CI ;
- écrire des itérateurs, des générateurs et du code asynchrone, et savoir quand les threads, les processus ou
asyncioconviennent ; - lire du code NumPy et pandas, et servir une API avec FastAPI.
| # | Leçon | Tu connais déjà |
|---|---|---|
| 1 | Installer et exécuter Python | dotnet, java, NuGet, Maven et Gradle, global.json, les fichiers de verrouillage |
| 2 | Le modèle d’exécution | types référence et types valeur, == et Equals, null, portée de bloc, constructeurs statiques |
| 3 | Types intégrés et collections | List<T>, Dictionary, HashSet, tableaux, LINQ, streams, decimal |
| 4 | Fonctions | arguments optionnels et nommés, params, varargs, lambdas et fermetures, attributs et annotations |
| 5 | Classes : dataclasses, propriétés, méthodes spéciales, héritage et protocoles (à venir) | classes, records, IEquatable, ToString, interfaces |
| 6 | Annotations de type : mypy et pyright, génériques, Protocol, TypedDict, ce qui n’est jamais vérifié à l’exécution |
génériques, types référence nullables, interfaces |
| 7 | Erreurs et ressources : exceptions, with et gestionnaires de contexte |
exceptions, using, try-with-resources |
| 8 | Modules et packages : imports, __init__.py, organisation d’un projet, publication |
assemblies, espaces de noms, packages NuGet, JAR |
| 9 | Tests : pytest, fixtures, paramétrage, Hypothesis | xUnit, JUnit, FsCheck, jqwik |
| 10 | Itérateurs et générateurs : yield, itertools |
IEnumerable, yield return, streams |
| 11 | Concurrence : le GIL et le free-threading, asyncio, concurrent.futures, multiprocessing |
Task, async/await, pools de threads, CompletableFuture |
| 12 | Données et calcul : NumPy, pandas ou Polars, et un regard honnête sur l’écosystème ML | tableaux, Span<T>, ML.NET |
| 13 | Outillage qualité : Ruff, formatage, pre-commit, CI | analyseurs, dotnet format, Checkstyle, Spotless |
| 14 | Services : FastAPI, comparé aux API minimales d’ASP.NET Core et à Spring WebFlux | ASP.NET Core, Spring |
| — | Journal |
Le cours d’apprentissage automatique et le cours sur l’IA de GA utilisent Python comme contre-vérification ; la leçon 12 renvoie vers eux au lieu de les répéter.
Ressources
Section intitulée « Ressources »- Le tutoriel Python, la référence du langage Python et la bibliothèque standard, pour Python 3.14
- Nouveautés de Python 3.14, et les Python Enhancement Proposals (PEP) que citent les leçons
- Documentation d’uv, et son journal des modifications
- Documentation de mypy, documentation de pyright, documentation de pytest
- Python Packaging User Guide, pour
pyproject.tomlet les formats que lit et écrit uv