GNU/Linux Magazine Hors-série N°
Numéro
65

Python avancé

Temporalité
Mars/Avril 2013
Image v3
Python avancé
Article mis en avant

Dans ce numéro...


Développer une application, ce n'est pas seulement taper des lignes de code. C'est aussi se munir d'un environnement de travail qui fluidifie les choses, que ce soit pour le développement en lui-même, pour les tests, ou pour le déploiement sur d'autres systèmes. Pour faire tout cela en Python, on utilise ce que l'on appelle des environnements virtuels. Nous allons voir dans cet article comment les mettre en place, les utiliser et faire en sorte qu'ils puissent être déployés rapidement. Mais avant de voir tout cela, il faut comprendre comment installer des librairies en Python. C'est par cela que nous allons démarrer.
Le mode CLI pour Command Line Interface – interface en ligne de commande – est très prisé des développeurs : il permet d'obtenir une interface à cheval entre la ligne de commandes et l'interface graphique. On peut utiliser des paramètres pour obtenir un fonctionnement très précis ou bénéficier d'un menu autorisant différents choix.
Nous avons vu précédemment à la fois comment installer simplement des librairies Python avec les virtualenvs et pip, mais aussi comment faire en sorte que votre code à partir d'un CVS soit facilement déployable. Pour distribuer vos programmes ou vos librairies en passant par PyPI (ou une instance personnelle d'un dépôt de module Python), il vous faudra utiliser le module distutils. Celui-ci vous permettra de configurer l'installation de votre projet, de générer différentes versions et de publier celles-ci sur PyPI ou autre.
Utiliser un décorateur ou plutôt la syntaxe des décorateurs n'est pas très compliqué. En programmation orientée objet, pour définir des méthodes de classe, c'est un passage obligé. En revanche, comprendre et créer un décorateur est loin d'être aussi simple... Pour réellement comprendre ce que sont les décorateurs et à quoi ils servent, nous allons devoir repartir de la définition même d'une fonction. Je pense que bon nombre de lecteurs ne ressentiront pas forcément l'utilité du début de l'article, ils le trouveront peut-être trop long et seront enclin à passer rapidement à la suite mais, encore une fois, la notion de décorateur, définie dans le PEP 318 [1], est loin d'être triviale. Je préfère donc commencer par les définitions de base pour être certain que nous nous basons tous sur les mêmes concepts. Comme nous allons effectuer beaucoup de tests, j'utiliserai un interpréteur interactif et vous verrez donc apparaître dans le code d'exemple le symbole du prompt >>>. À moins de le préciser explicitement, j'utiliserai Python 2.7.
Python est un langage admirable pour tous les amoureux de l'algorithmique. L'un des cas d'utilisation les plus fréquents est l'itération. Dans ce domaine comme dans d'autres, Python fait preuve d'originalité. Cet article va présenter un panorama de ce qu'il faut savoir sur ce processus.
Multi-paradigme, le langage Python autorise le traitement de données via le paradigme fonctionnel, en particulier à l'aide de compréhensions de listes, d'ensembles ou de dictionnaires. Plus que de simples outils, il s'agit là de la manière privilégiée pour modifier des collections de données, par une écriture lisible, simple et compréhensible et pour ne rien gâcher, avec des performances souvent meilleures que l'équivalent écrit en procédural.
Python est un langage semi-interprété. En tant que tel, il produit un pseudo-code que l'on peut retrouver dans les fichiers d'extension .pyc (PYthon Compilé). Dans cet article, je vous propose d'étudier le pseudo-code Python. Python fournit le module dis, qui permet de désassembler le pseudo-code (souvent appelé bytecode) en un code plus lisible, l'opcode. Bien sûr, ne vous attendez pas à retrouver du code Python. Vous aurez simplement accès à l'opcode plus facilement lisible pour un être humain et comportant des mnémoniques.
Python est, comme vous le savez déjà très certainement, livré « piles incluses ». Le débogage étant un besoin essentiel pour tout développeur, la bibliothèque standard dispose d'un module dédié à cet aspect : le module pdb. Il est relativement simple d'utilisation et assez complet.
Les tests unitaires sont des éléments essentiels dans le développement de toute application, puisqu'ils permettent de s'éviter bien des déconvenues tout au long des processus de création et de maintenance de l'application. Ils doivent être associés à des tests fonctionnels et de performance, ainsi qu'à diverses autres métriques au sein d'un processus d'intégration complet.
Documenter un code est une perte de temps en première intention. On a le sentiment de ne pas être productif, que le projet sur lequel on travaille n'avance pas. Pourtant, pour peu que l'on développe en équipe ou que le projet soit mis en attente ne serait-ce qu'une semaine, la documentation va permettre de se remettre au travail beaucoup plus rapidement. Qui n'a jamais redécouvert un de ses propres codes au bout de quelques semaines sans comprendre comment il avait pu coder quelque chose d'aussi horrible/merveilleux ?
Python est un langage à typage dynamique et au modèle objet très original, à la fois minimaliste et très complet. Les deux caractéristiques font que le langage Python s'affranchit élégamment d'un certain nombre de contraintes qui pèsent sur les langages à typage statique, mais surtout, des très nombreuses problématiques qui y sont liées. La cohérence de ce modèle objet se fonde principalement sur la bonne utilisation du duck typing. Mais comme d'une part, elle ne résout pas tout et d'autre part, Python abhorre le mode de pensée « bondage and discipline », il a été créé le module abc qui est un bon compromis.
Lorsque l'on veut afficher un simple message en Python, il faut utiliser print. Mais parfois, l'information que l'on transmet à l'utilisateur n'est pas un simple message : il peut s'agir d'un avertissement suite à un problème rencontré par le programme, voire même d'une erreur. Les messages doivent alors être qualifiés et on peut même filtrer leur affichage en fonction de leur importance, les stocker dans des fichiers de log... Vous l'aurez compris, print ne suffit plus ! La journalisation des messages (ou logging en anglais) permet de conserver un historique des incidents survenus lors de l'exécution d'un programme. Les messages, généralement horodatés, sont stockés dans un fichier appelé journal ou fichier de log, mais ils peuvent également être affichés à l'écran. En Python, il existe un module bien pratique pour réaliser toutes les tâches liées à la tenue d'un tel journal : le module logging.
Lorsque l'on doit générer des données ayant une certaine structure, il peut être très intéressant d'utiliser des fichiers de modèles. Ces fichiers correspondent à des textes à trous, que l'on complétera à la demande avec une liste de valeurs, évitant ainsi la répétition d'opérations identiques pour la génération de fichiers ou de chaînes de caractères ayant la même structure.

Magazines précédents

Apprenez à programmer en Go !
GNU/Linux-Magazine Hors-série N°63
Apprenez à programmer en Go !
Ne quittez plus vos serveurs des yeux !
GNU/Linux-Magazine Hors-série N°62
Ne quittez plus vos serveurs des yeux !
Créez vos applications Android comme un pro !
GNU/Linux-Magazine Hors-série N°61
Créez vos applications Android comme un pro !
20 Recettes pour développer vos applications Android
GNU/Linux-Magazine Hors-série N°60
20 recettes pour développer vos applications Android

Les derniers articles Premiums

Les derniers articles Premium

La place de l’Intelligence Artificielle dans les entreprises

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’intelligence artificielle est en train de redéfinir le paysage professionnel. De l’automatisation des tâches répétitives à la cybersécurité, en passant par l’analyse des données, l’IA s’immisce dans tous les aspects de l’entreprise moderne. Toutefois, cette révolution technologique soulève des questions éthiques et sociétales, notamment sur l’avenir des emplois. Cet article se penche sur l’évolution de l’IA, ses applications variées, et les enjeux qu’elle engendre dans le monde du travail.

Petit guide d’outils open source pour le télétravail

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Ah le Covid ! Si en cette période de nombreux cas resurgissent, ce n’est rien comparé aux vagues que nous avons connues en 2020 et 2021. Ce fléau a contraint une large partie de la population à faire ce que tout le monde connaît sous le nom de télétravail. Nous avons dû changer nos habitudes et avons dû apprendre à utiliser de nombreux outils collaboratifs, de visioconférence, etc., dont tout le monde n’était pas habitué. Dans cet article, nous passons en revue quelques outils open source utiles pour le travail à la maison. En effet, pour les adeptes du costume en haut et du pyjama en bas, la communauté open source s’est démenée pour proposer des alternatives aux outils propriétaires et payants.

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Bash des temps modernes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les scripts Shell, et Bash spécifiquement, demeurent un standard, de facto, de notre industrie. Ils forment un composant primordial de toute distribution Linux, mais c’est aussi un outil de prédilection pour implémenter de nombreuses tâches d’automatisation, en particulier dans le « Cloud », par eux-mêmes ou conjointement à des solutions telles que Ansible. Pour toutes ces raisons et bien d’autres encore, savoir les concevoir de manière robuste et idempotente est crucial.

Body