Makina Blog

Le blog Makina-corpus

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 :

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

Formations Python

Formation Python

À distance (FOAD) Du 16 au 20 décembre 2024

Voir la formation

Actualités en lien

Image
Encart PyConFr 2024
21/10/2024

Makina Corpus est spon­sor de la PyConFR 2024

Le soutien de Makina Corpus à la PyConFR 2024, qui se tient du 31 octobre au 3 novembre 2024 à Stras­bourg, reflète ses valeurs de partage et d’in­no­va­tion, et son enga­­ge­­ment envers la commu­nauté dyna­­mique et ouverte de Python.

Voir l'article
Image
10 choses qui me font aimer python
05/02/2019

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…

Voir l'article
Image
Python_MAJ
29/11/2018

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.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus