Python Avancé – Astuce n°1 : Les décorateurs

-
2
 m de lecture
-
machine learning

Lorsqu’on fait du Machine Learning en Python, on n’a pas nécessairement besoin de toutes les caractéristiques de ce langage: scikit-learn, numpy et pandas sont très bien développées et ne nécessitent pas beaucoup plus de connaissances que des bases en Programmation Orientée Objet et un peu de méthode.

Toutefois le travail du Data Scientist consiste parfois à créer des APIs pour accéder à un modèle ou à des données: pour nous, cette responsabilité échoit au Data Engineer mais dans beaucoup de structures, c’est la responsabilité du Data Scientist. Par exemple, une entreprise comme Amazon crée toutes ses features sous forme d’API. Il est donc essentiel de se familiariser aux APIs en plus de connaître le Machine Learning, le Deep Learning, la Data Visualization et les différentes techniques statistiques d’exploration des données. 

Pour ne pas se départir de son langage préféré, le Data Scientist va alors naturellement se tourner vers Flask. C’est la technologie que nous avons choisi de mettre en avant dans notre formation de Data Engineering.

Flask c’est bien mais...

Flask, une fois qu’on a compris la syntaxe, est en effet très simple à utiliser. Mais la première fois qu’on l’utilise, on se retrouve confronté à ce genre de code:

Ce @app.route tout droit sorti des enfers qui vient remettre en question votre compréhension globale de Python…

Les décorateurs

decorateurs
À priori rien à voir ...

Ce @ est utilisé en Python pour introduire un décorateur (et non, il n’est pas simplement là pour faire joli…). Il se place juste avant une fonction et permet d’envelopper (wrap) la fonction dans une autre fonction appelée le wrapper

Ainsi si je veux construire une fonction qui prend en mesure et affiche le temps pris par une fonction pour tourner, je peux l’implémenter de la manière suivante:

On remarquera que cette fonction prend en argument une fonction (function comme son nom l’indique), qu’à l’intérieur elle définit une nouvelle fonction (timed_function) et qu’elle retourne cette nouvelle fonction. 

Ainsi  lorsque que j’utilise un décorateur, je pourrais voir le temps s’afficher à la fin de son exécution.

UNE CARRIÈRE DANS LA DATA VOUS TEND LES BRAS !

Une reconversion dans le big data vous intéresse, mais vous ne savez pas par où commencer ? Découvrez nos formations en Data Science.

Participer à votre première formation data gratuitement !

Assistez aux cours dispensés en live par nos formateurs pour démarrer sur Python, SQL, Power BI…

UNE CARRIÈRE DANS LA DATA VOUS TEND LES BRAS !

Une reconversion dans le big data vous intéresse, mais vous ne savez pas par où commencer

Découvrez nos formations en Data Science.

Participer à votre première formation data gratuitement !

Assistez aux cours dispensés en live par nos formateurs pour démarrer sur Python, SQL, Power BI …

Les décorateurs sont très utiles pour vérifier le type des données, pour afficher des informations sur le fonctionnement de la fonction sans pour autant avoir à le recoder dans chaque fonction. C’est très utilisé dans Flask évidemment mais aussi dans beaucoup des codes sources de nos librairies préférées: un exemple, un autre, et un troisième pour la route

Aller un tout petit peu plus loin …

Bon quand moi j’ai vu ça, je me suis posé quelques questions (et pas seulement est-ce que c’est bien utile). 

Peut-on passer des arguments au décorateur et non à la fonction décorée? Oui mais la syntaxe est un peu plus complexe:

Est-ce qu’on peut enchaîner les décorateurs? Sans problème:

 

Est-ce qu’on peut décorer des méthodes? Oui

Est-ce qu’on peut décorer des classes ? Oui

python avancé
Un décorateur de classe ?

Les décorateurs sont des outils assez intéressants. Ils paraissent surprenant au premier abord mais permettent de se simplifier le travail une fois qu’on a compris comment ils fonctionnaient. Vous ne les rencontrerez pas tous les jours mais si jamais ça arrive, alors vous aurez été préparés.

Cet article vous a plu ? N’hésitez pas à vous abonner à notre newsletter pour recevoir des astuces data que vous ne trouverez nulle part ailleurs ! 

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?