Python : Introduction
Ce qui rend Python différent des autres langages : son histoire, sa philosophie, l'indentation comme syntaxe et son exécution monothread.
Python : Introduction
Avant la syntaxe, il faut comprendre ce qu'est Python et pourquoi il ne ressemble pas aux autres langages. Sa priorité affichée depuis le premier jour : la lisibilité. Le reste (indentation obligatoire, typage dynamique, exécution monothread) découle de cette philosophie.
# Un peu d'histoire
Python est né fin 1989 sous les mains de Guido van Rossum, un développeur néerlandais, et sort en 1991. Le nom ne vient pas du serpent mais des Monty Python, dont Guido était fan. Il en restera le « dictateur bienveillant à vie » (BDFL) jusqu'en 2018.
Deux dates comptent :
- Python 2 (2000) et Python 3 (2008) ont coexisté des années, avec une migration douloureuse (Python 3 casse la compatibilité). Python 2 est officiellement mort en 2020.
- Dans les années 2010, l'essor de la data science et du machine learning propulse Python au sommet des langages les plus utilisés.
# Ce qui rend Python différent
| Trait | Ce que ça implique |
|---|---|
| Interprété | Pas de compilation en binaire natif avant de lancer : le source est traduit en bytecode au lancement, puis exécuté par l'interpréteur. |
| Typé dynamiquement | Le type d'une variable est déterminé à l'exécution, pas déclaré. |
| Fortement typé | Mais pas de conversions implicites hasardeuses : "1" + 2 lève une erreur (contrairement à JavaScript). |
| Indentation significative | Les blocs sont délimités par l'indentation, pas par des accolades. Unique parmi les langages grand public. |
| Monothread (le GIL) | Un seul thread exécute du code Python à la fois. Un choix structurant, détaillé plus bas. |
| Multi-paradigme | Impératif, orienté objet, une touche de fonctionnel. On n'est forcé dans aucun moule. |
| « Batteries included » | Une bibliothèque standard énorme : dates, JSON, HTTP, fichiers, regex, tout est déjà là. |
Tape import this dans un interpréteur Python : tu verras le « Zen of Python », la charte de conception du langage (« Readability counts », « There should be one obvious way to do it »).
# L'indentation, c'est la syntaxe
Le trait le plus visible. Là où d'autres langages écrivent { }, Python utilise le niveau d'indentation pour délimiter les blocs, et un : pour les ouvrir.
if connecte:
afficher_tableau_de_bord()
log("connexion ok")
else:
rediriger_vers_login()if connecte: afficher_tableau_de_bord() log("connexion ok")else: rediriger_vers_login()Conséquence : une indentation incohérente n'est pas une question de style, c'est une erreur de syntaxe. Le code proprement aligné n'est donc pas une bonne pratique optionnelle, c'est une obligation du langage.
# Monothread par nature
Point souvent mal compris : à cause du GIL (Global Interpreter Lock), un seul thread exécute du code Python à la fois. Lancer plusieurs threads n'accélère donc pas un calcul intensif : ils se relaient au lieu de tourner en parallèle.
Ce n'est pas un bug mais un choix de conception (il simplifie la gestion mémoire de l'interpréteur). Il a des conséquences réelles sur la performance, expliquées en détail ici :
- Le GIL et le multithreading - pourquoi Python est monothread, ce que sont CPU-bound et I/O-bound, et comment on contourne
# Où on l'utilise
Python n'est pas un langage de niche : il domine plusieurs domaines.
- Data science et machine learning : NumPy, pandas, PyTorch, scikit-learn. C'est son terrain de prédilection.
- Scripting et automatisation : la « glu » qui colle des outils entre eux, les scripts d'admin, le DevOps.
- Web back-end : Django, Flask, FastAPI.
- Prototypage : de l'idée au code qui tourne en quelques minutes.
# Par où continuer
Les bases du langage, en détail, dans les sous-notes :
- Les types - int, float, str, bool, None et le typage dynamique
- Les collections - list, tuple, dict, set
- Structures de contrôle - conditions, boucles et compréhensions
- Les fonctions -
def, arguments,lambda - Les objets (POO) - classes, héritage, méthodes spéciales,
@dataclass - Les exceptions -
try/except,raiseet le style EAFP
Et pour la prise de recul : mon avis (mitigé) sur Python.
Pour aller plus loin
Python : Les types
int, float, str, bool, None, le typage dynamique, les conversions et les f-strings.
Python : Les collections
list, tuple, dict et set : les quatre structures de données de base, leurs différences et leurs usages.
Python : Structures de contrôle
Conditions (if/elif/else), boucles (for, while) et les compréhensions, l'écriture idiomatique de Python.
Python : Les fonctions
Définir des fonctions, les arguments (nommés, par défaut, *args/**kwargs), les lambdas et les fonctions comme objets.
Python : Les objets (POO)
Classes, self et __init__, héritage, encapsulation par convention, méthodes spéciales et @dataclass : la POO à la sauce Python.
Python : Les exceptions
try / except / else / finally, with, raise, exceptions personnalisées et le style EAFP : gérer les erreurs à la Python.