Accueil / Blog / Métier / 10 choses qui me font aimer Python

10 choses qui me font aimer Python

Par Sébastien Corbin publié 08/10/2018
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...
10 choses qui me font aimer Python

Bon, je reste amoureux du langage hein, pas de l'animal

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ément à la clé spécifiée ne sont pas présent, 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()

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 🐍.

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Pourquoi mettre à jour son Python (régulièrement) Pourquoi mettre à jour son Python (régulièrement) 03/12/2018

Le début des années 2010 a vu des centaines d’articles parler du passage de Python 2 à Python ...

Formation initiation Python à Nantes du 10 au 12 décembre Formation initiation Python à Nantes du 10 au 12 décembre 13/11/2018

Vous êtes développeur et maîtrisez déjà un langage de programmation ? Python vous tente et ...

Formation Python scientifique / Data scientist du 26 au 30 novembre à Toulouse Formation Python scientifique / Data scientist du 26 au 30 novembre à Toulouse 16/10/2018

Participez à notre prochaine session de formation Python scientifique à Toulouse !

Machine Learning : classer automatiquement vos données à l'import Machine Learning : classer automatiquement vos données à l'import 20/03/2018

Comment utiliser des algorithmes de machine learning pour importer correctement des données dans ...

Présentation de l'écosystème Python scientifique Présentation de l'écosystème Python scientifique 10/11/2016

Au fil des années Python est devenu un outil du quotidien pour les ingénieurs et chercheurs de ...