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

Nantes Du 25 au 27 mars 2024

Voir la formation

Formations Python

Formation Python avancé

Nantes Du 8 au 12 avril 2024

Voir la formation

Formations IA / Data Science

Formation Python scientifique

Nantes Du 22 au 26 janvier 2024

Voir la formation

Actualités en lien

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
Image
Canari
20/07/2023

CANARI Europe, un service climatique innovant pour adapter l'agriculture européenne

Après un lancement réussi de CANARI l'application de projections climatiques dédiée à l'agriculture en France, CANARI s’étend à toute L’Europe et au nord du Maghreb.

Voir l'article
Image
Encart Reference Rencontres R
14/06/2023

Makina Corpus sponsorise les 9èmes Rencontres R

Du 21 au 23 juin 2023, Makina Corpus est sponsor argent des 9èmes Rencontres R à l'Université d'Avignon. Retrouvez notre équipe sur notre stand et participez aux conférences de nos experts.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus