Python - Shorthand syntax
Nous allons apprendre à raccourcir la syntaxe Python. C'est souvent plus élégant (mais pas toujours plus lisible !).

Objectifs
✅ Apprendre les syntaxes courtes en python ✅ Comprendre dans quel cas les utiliser (ou ne pas les utiliser)
Sommaire
Fonctions lambda
Tu connais déjà la syntaxe pour définir une fonction. Par exemple, créons une fonction qui retourne le carré d'un nombre.
def square(number):
return number**2
square(3)
>>> 9
Nous pourrions créer une fonction lambda en une seule ligne qui fait la même chose :
square_short = lambda x: x**2
square_short(3)
>>> 9
Essayons de comprendre cette nouvelle syntaxe :
lambdaest l'équivalent dudef, pour indiquer à python que nous allons définir une fonction lambda, et non pas une fonction classique.xest le paramètre. Nous aurions pu l'appeler autrement. Par exemplenumberouarg.
Il existe même une manière encore plus courte : les fonctions lambda auto-appelées (self-called). Elles permettent d'utiliser une fonction sans stocker le nom de cette fonction en mémoire.
(lambda x: x**2)(3)
>>> 9
A quoi ca sert ? Tu verras bientôt qu'avec Pandas, on utilise beaucoup les fonctions lambda. En effet, ca permet de retraiter des données, sans avoir à stocker les noms des fonctions. Ce sont comme des fonctions "jetables", à usage unique.
Compréhension de listes
Tu connais la syntaxe pour créer une liste à partir d'une boucle. Par exemple, déterminons la table de multiplication de 3.
result = []
for i in range(10):
result.append(i*3)
result
>>> [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
Avec une compréhension de liste, nous pouvons faire cette opération en une seule ligne :
[i*3 for i in range(10)]
>>> [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
C'est nettement plus élégant !
Nous aurions même pu utiliser une condition, par exemple pour ne pas montrer le multiple 5*3 :
[i*3 for i in range(10) if i != 5]
>>> [0, 3, 6, 9, 12, 18, 21, 24, 27]
Syntaxe des compréhensions de liste avec if et if/else En Python, dans les compréhensions de liste, l’emplacement du if dépend de la présence ou non d’un else en raison des règles de syntaxe et d’évaluation. Compréhension de liste avec if sans else : Syntaxe : [expression for item in iterable if condition] Le if se trouve après le for : Ici, le if sert de filtre pour inclure uniquement les éléments qui satisfont condition. Le for est donc évalué en premier, puis le if agit comme un filtre. Exemple :
[x**2 for x in range(10) if x % 2 == 0]
Compréhension de liste avec if / else : Syntaxe : [expression if condition else other_expression for item in iterable] Le if/else se trouve avant le for : Ici, if fait partie d’une expression ternaire (ou conditionnelle), ce qui signifie que chaque élément est évalué individuellement pour voir s'il satisfait condition. Le if fait alors partie de l’expression principale et se trouve avant le for. Exemple :
[x**2 if x % 2 == 0 else x**3 for x in range(10)]
Quand ne pas les utiliser Ces syntaxes courtes semblent nettement plus élégantes, pourquoi ne pas les utiliser tout le temps ? Car elles peuvent rendre le code plus difficile à lire, à comprendre. De plus, elles ne permettent pas de mettre des commentaires. Pour faire simple, dés que votre syntaxe courte devient... trop longue, il vaut mieux repasser sur la syntaxe standard. Le guide pour coder Python avec style PEP8 préconise de ne pas dépasser 80 caractères (espaces compris) par ligne.
Challenge
Crée un notebook sur Google Colab, et essaye de réaliser chacune des missions suivantes avec une syntaxe classique et ensuite avec une syntaxe courte en une seule ligne.
- Une fonction qui convertit des montants en dollars vers des montants en euros (prends le cours euro/dollar du jour où tu fais la quête).
- Une fonction qui renvoie la somme des nombres pairs présents dans une liste contenant des nombres entiers.
- Une fonction qui convertit une liste de nombres entiers positifs ou négatifs) en une nouvelle liste contenant leurs valeurs absolues.
Tu peux prendre la liste suivante pour exemple :
test_list = [0, 3, -6, 9, 12, -15, 18, -21, 24, 27]
Critères de validation
- Le fichier en lien est consultable pour toute personne disposant du lien
- Toutes les missions ont été réalisées
Tu trouveras dans ce notebook une solution au challenge. Ce n'est pas la seule qui existe, mais elle fonctionne !
Ressources partagées sur cette quête
- tophttps://girlthatlovestocode.com/8-explained-examples-of-list-comprehension-in-python
- Pour la somme des nombres pairs avec lambdahttps://www.python-course.eu/python3_lambda.php
- clartéhttps://www.w3schools.com/python/python_lists_comprehension.asp