Makina Blog
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…
Le slicing
En python, beaucoup de types sont itérables, et la manière de récupérer un ou plusieurs éléments est tellement facile et logique qu'inverser une chaîne se résume à ma_chaine[::-1] ou récupérer les nombres pairs de 0 à 100 range(101)[::2]
Les paramètres et leur compression intelligente
La présence de paramètres nommés facultatifs dont l'ordre importe peu est très utile et permet d'ajouter plus de flexibilité à une application : pas besoin de vérifier tous les usages d'une méthode lors de la modification de sa signature. Qui plus est, grâce à la compression, très utilisée en objet, on peut ne prendre parmi les paramètres que ceux dont on a besoin.
class MaClasse(object):
def ma_methode(
mon_parametre_utile,
*args, **kwargs, # le reste peu m'importe...
):
L'héritage multiple
L'héritage multiple (soit le fait pour une classe d'avoir plusieurs parents) est très utile pour la création de mixins : ces petites classes qui représentent un comportement simple mais pouvant être partagé par plusieurs classes. En revanche, on peut vite arriver à des problèmes d'héritage en diamant, et il faut être conscient du MRO.
Typage fort
Nombre de conférences se moquent des aberrations de certains langages, et cela vient souvent du typage faible. En python, on n'ajoute pas des chihuahuas à du vent, et on ne multiplie pas des saucisses de Morteau avec du sable ! (oui, Kamoulox)
Les listes par compréhension
En python, beaucoup de types sont itérables (tiens je l'ai pas déjà dit ?), et parfois on veut récupérer une seule propriété ou filtrer les éléments d'une liste de données. Les listes par compréhension permettent facilement de récupérer ce que l'on veut, en une seule ligne. Attention tout de même à ne pas en abuser car leur lecture peut être difficile.
personnes_majeures = [p for p in personnes if p.age >= 18]
Les lambda
Bien des langages intègrent maintenant la possibilité de créer des fonctions anonymes, et c'est très utile pour les fonctions telles que sorted(liste, lambda x: x.age) ou filter(liste, lambda x: x.sexe = 'f'). Le fait que celles-ci ne puissent faire qu'une ligne permet de garder ce cas d'usage pour des fonctions au métier simple, et ne pas avoir des closures très longues sans nom, comme dans certains langages (suivez mon regard).
Les générateurs
Les générateurs répondent à une problématique d'itération, où la liste des éléments n'est pas connue à l'avance. Démonstration : imaginons que je vous demande les jours ouvrés en 1er avril 2017 et le 10 décembre 2017. Il serait fastidieux de trouver tous les jours non-ouvrés de cette période et de les soustraire, en revanche, parcourir tous les jours de cette période et ne pas renvoyer les jours non-ouvrés est beaucoup plus simple :
def business_days(date_from, date_to):
"""
Générateur retournant les jours ouvrés dans la période [date_from:date_to]
:param date_from: Date de début de la période
:param date_to: Date de fin de la période
:return: Générateur
"""
while date_from <= date_to:
# Un jour est ouvré s'il n'est ni férié, ni samedi, ni dimanche
if not is_holiday(date_from) and date_from.isoweekday() not in [6, 7]:
yield date_from
date_from += timedelta(days=1)
La totalité du code du générateur de jours ouvrés français se trouve ici.
Default dict
Python est plein de petits outils très pratiques pour gérer vos données, l'un de ces outils est defaultdict(), qui permet de créer un dictionnaire qui, si les éléments à la clé spécifiée ne sont pas présents, seront automatiquement créés, par exemple :
>>> normal_dict = {}
>>> normal_dict['a'].append(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
>>> from collections import defaultdict
>>> ddict = defaultdict(list)
>>> ddict['a'].append(1)
>>> dict(ddict)
{'a': [1]}
Les décorateurs
Tout comme l'héritage multiple, les décorateurs permettent à python d'ajouter des comportements rapidement à un une méthode ou une classe. Voyons par exemple comment on debug facilement une fonction avec un décorateur.
def printio(func):
def wrapper():
print("Je rentre dans {}.".format(func.__name__))
func()
print("Je sors de {}.".format(func.__name__))
return wrapper
@printio
def hello_world():
print("Hello World!")
hello_world()
# Par contre ça devient vite bizarre si vous appelez votre méthode maman()
.. Bon le mieux est encore d'aller faire un tour sur notre article sur "comment débugger en python"
La bibliothèque standard
La bibliothèque standard est un des arguments de poids pour le choix de python comme langage. Certains diront qu'elle n'est pas bien triée (exemple os.remove(), shutil.rmtree() et shutil.move(), mais rappelez vous de l’inconsistance de PHP et de la polémique left_pad.
Cette bibliothèque en fait un langage de premier choix pour le scripting (avec argparse), des interfaces graphiques (tkinter ), de l'édition multimédia, un serveur HTTP, un client FTP, mail, etc.
PS : Oui, dans l'image, le serpent est un cobra, mais je n'ai pas trouvé de charmeur de pythons. En revanche, on essaie de l'intégrer à notre plan de formation python, mais les formateurs ne sont pas encore assez entraînés 🐍.
Formations associées
Formations IA / Data Science
Formation Initiation au Python scientifique
À distance (FOAD) Du 2 au 6 décembre 2024
Voir la formationFormations IA / Data Science
Formation Python scientifique
Nantes Du 27 au 21 janvier 2025
Voir la formationActualité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.
Revoir les webinaires : découverte de l’outil CANARI-France
L’application CANARI-France est destiné aux acteurs agricoles afin de calculer des indicateurs agro-climatiques à partir de projections climatiques. Découvrer en le replay des 4 webinaires organisés par Solagro et l’ADEME.
La formation Python éligible au CPF est enfin arrivée
Makina Corpus propose un nouvelle formation Python éligible au CPF. Grâce à cette certification, cette formation peut être entièrement financée par votre compte Compte Personnel de Formation.