Makina Blog

Le blog Makina-corpus

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 formation

Formations Python

Formation Python avancé

Toulouse Du 2 au 6 décembre 2024

Voir la formation

Formations IA / Data Science

Formation Python scientifique

Nantes Du 27 au 21 janvier 2025

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
Webinaire découverte de Canari
10/04/2024

Revoir les webi­naires : décou­verte de l’ou­til CANARI-France

L’ap­pli­ca­tion CANARI-France est destiné aux acteurs agri­coles afin de calcu­ler des indi­ca­teurs agro-clima­tiques à partir de projec­tions clima­tiques. Décou­vrer en le replay des 4 webi­naires orga­ni­sés par Sola­gro et l’ADEME.

Voir l'article
Image
Python
26/07/2023

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.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus