Makina Blog
5 choses qui me font (toujours) aimer Python
Car quand on aime, on peut aussi compter.
Le code romancé
Dans la majorité des langages de programmation, le code est souvent affublé de symboles pour le structurer (parenthèses, accolades, points-virgules), mais dès le départ Python a choisi de se reposer sur l'indentation pour déterminer les blocs de code.
Mais ce n'est pas tout, le langage intègre également des opérateurs et fonctions de la librairie standard qui rendent le code bien plus lisible qu'un autre langage pour un même algorithme, prenons pour exemple :
Non être ou ne pas être
Nous préférons en python une phrase bien construite ma_variable is not None
à la version not ma_variable is None
Comparaison chainée
Dans bien des langages, nous devons décomposer les comparaisons multiples sur une variable avec un and
var = 10;
if (0 < var && var < 100) {
do_something();
}
Python apporte un sucre syntaxique qui permet de faire la même chose en une seule condition :
var = 10
if 0 < var < 100:
do_something()
La déconstruction (unpacking)
Ceci est bien utile pour raccourcir le code tout en restant lisible
colonne = lire_colonne_csv()
titre = colonne[0]
valeurs = colonne[1, colonne.length()]
En python, ceci est faisable en une instruction :
titre, *valeurs = lire_colonne_csv()
Any/All et les listes par compréhension
Lorsqu'il faut parcourir des itérables pour détecter la présence d'éléments vérifiant une condition, il faut utiliser un if
dans une boucle for
:
$points = [new Point(1, 2), new Point(4, 2), new Point(-1, 2), new Point(0, 5), new Point(1, 2)];
$out_of_bounds = false;
foreach($points as $point) {
if($point->x < 0 || $point->y < 0) {
$out_of_bounds = true;
}
}
En python, grâce aux listes par compréhension et les fonctions any()
/all()
, nous pouvons faire ceci en une instruction :
points = [Point(1, 2), Point(4, 2), Point(-1, 2), Point(0, 5), Point(1, 2)]
if any(point for point in points if point.x < 0 or point.y < 0):
out_of_bounds = True
nous sommes ainsi très proches d'un pseudo code lisible directement :
- Je crée une liste de points
- Si au moins un point parmi points a x inférieur à 0 ou y inférieur à 0 : alors nous sommes hors-périmètre
Il est bien sûr possible de transposer le code PHP directement en Python, mais cette autre façon est dite plus pythonique.
C'est pour cela que j'ai plaisir à dire que du code Python bien écrit se lit comme un roman.
Le débogueur intégré
Python fait partie des rares langages à posséder un débogueur intégré, de son petit nom pdb
(pour Python DeBugger), il peut être lancé avec la fonction breakpoint()
. Pas besoin d'IDE, pas besoin de navigateur, rien à installer, il est directement utilisable dès lors que vous avez la main sur votre process Python.
Bon, disons-le tout de suite, ce débogueur manque un peu de couleur, et est relativement peu intuitif. Je vous invite donc à installer une extension telle que pdbpp
ou ipdb
, qui vous apportera coloration syntaxique, auto-complétion et un pas à pas plus clair avec un mode sticky.
L'écosystème (y compris non web)
Le Python Package Index (pypi) possède plus de 450 000 projets, il y a de grandes chances que quelqu'un ait eu la même idée que vous et en ait fait un paquet.
Ainsi, nous pouvons trouver :
- Une bibliothèque pour contrôler son poêle à granulés
- Une bibliothèque pour contrôler son ampli Hi-fi
- Une bibliothèque de jeux
- Une bibliothèque de blagues
- Une bibliothèque pour faire de l'ASCII art
Bref, vous trouverez certainement votre bonheur dans les 15 To que propose la communauté !
Un langage qui évolue
Python est certes très vieux, plus de 30 ans, mais il ne reste pas sans bouger. Ainsi, il est conseillé de maintenir son Python à jour pour bénéficier non seulement des nouvelles fonctionnalités mais aussi des corrections de sécurité.
Vous aurez, livré avec les nouvelles versions, de nouveaux opérateurs comme le walrus operator (parce qu'il ressemble à un smiley de morse):
# Avant
colonne = lire_colonne_csv()
if colonne:
titre, *valeurs = colonne
else:
print("Colonne inexistante")
# Après
if colonne := lire_colonne_csv():
titre, *valeurs = colonne
else:
print("Colonne inexistante")
Mais il n'y a pas que des trucs nouveaux dans Python, il y a également des choses retirées, car désuètes, ce qui garde la stdlib propre, c'est un signe de bonne santé du langage.
Python est utilisable à peu près partout !
Nous pouvons le mettre dans des objets, dans son smartphone, dans n'importe quel OS digne de ce nom, dans des jeux,… Nous pouvons même l'installer dans son site web !
Formations associées
Actualités en lien
Makina Corpus est sponsor de la PyConFR 2024
Le soutien de Makina Corpus à la PyConFR 2024, qui se tient du 31 octobre au 3 novembre 2024 à Strasbourg, reflète ses valeurs de partage et d’innovation, et son engagement envers la communauté dynamique et ouverte de Python.
10 choses qui me font aimer Python
La 7e va vous surprendre ! Haha, non en fait il fallait que je m'arrête à 10, sinon vous ne liriez pas cet article de par sa longueur…
Pourquoi mettre à jour son Python (régulièrement)
Le début des années 2010 a vu des centaines d’articles parler du passage de Python 2 à Python 3. Cet article n’en est pas un.