Vous trouverez ci-dessous les pages qui utilisent le terme « Python ».
Formations / Formation initiale en Python
Python vous octroie de grands pouvoirs en termes de productivité, d’efficacité et de créativité.
Découvrez ce langage de programmation et devenez autonome sur vos premiers projets.
Cette formation ouvre la voie vers un univers exaltant, passionnant et surtout très utile au quotidien.
Formations / Formation Python avancé
Besoin de créer une application conséquente ?
Cette formation permet de réaliser le développement dans un temps réduit en facilitant la maintenance et l’évolutivité du code grâce aux diverses fonctionnalités du langage Python.
Formations / Qualité de logiciel Python
Votre application Python prend de l’ampleur. Maîtrisez la qualité de vos développements avec l’aide d’outils précieux (linters et formatters) vous guidant dans les bonnes pratiques. Apprenez à gérer les erreurs, avec les exceptions et la génération de logs (journaux).
Cette formation met l’accent sur la qualité de code pour éviter la dette technique.
Formations / Tests d’une application Python
Vous est-il déjà arrivé de livrer un logiciel avec cette fâcheuse pensée à l’esprit : « Prions pour que cela fonctionne ».
Avec 100 % de couverture de test, vous livrerez désormais votre produit en toute confiance !
Révolues les longues périodes de debug/intégration, venez découvrir comment les tests font prodigieusement gagner du temps. Apprenez à écrire des tests !
Formations / Annotations de type en Python
Pour améliorer la maintenabilité du logiciel, les annotations de type sont apparues il y a quelques années en Python (en 2014).
Découvrez comment :
- trouver des erreurs de conception
- documenter le code
- améliorer le comportement des IDE pour gagner en productivité
Formations / Manipulation de fichiers Excel en Python
Excel est omniprésent en entreprise. Découvrez comment Python permet de manipuler des fichiers Excel (*.xlsx) en automatique.
Extrayez des données, générez des rapports, des tableaux de bord. Gagnez du temps libre pour vos autres activités.
Formations / Dataclass en Python
Les dataclass
sont une des fonctionnalités majeures apparues avec Python 3.7. Elles permettent l’écriture rapide et efficace de classes.
Vous apprendrez à écrire moins de code (et donc moins de tests ou d’efforts de maintenance), tout en améliorant la lisibilité
Formations / Packages en Python
Partagez votre travail avec vos collègues et/ou la communauté en apprenant à utiliser et créer des packages rendant le code distribuable et installable. Vous verrez l’ancienne méthode avec setuptools
/pip
/venv
mais aussi une méthode plus moderne à base de pyproject.toml
avec Poetry
.
Lors de cette formation, vous créerez des environnements virtuels pour y installer vos propres packages.
Formations / Expressions régulières en Python
Les programmeurs manipulent énormément de fichiers textes (code source de leur logiciel, données textuelles issues du web, fichiers CSV, journaux d’exécution…). Les expressions régulières permettent d’accélérer le traitement de ces textes tant au niveau de la recherche d’information que dans l’édition.
Vous gagnerez beaucoup de temps dans la gestion du texte, vous permettant d’ajouter plus de fonctionnalités à votre logiciel.
Formations / Formation à la demande
Vous avez un besoin de formation particulier, vous aimeriez avoir une formation sur mesure (Python, C, C embarqué…), ou encore vous souhaitez un mix de formations existantes.
Contactez-nous pour l’élaboration de la formation adaptée à votre contexte.
Formations / Python et XML
Régulièrement décrié, XML est très puissant et a par exemple été choisi pour les nouveaux formats de documents Microsoft Office (*.docx, *.xlsx…).
Découvrez comment Python permet de manipuler simplement les fichiers XML.
Formations / Parallélisation des calculs en Python
Comment bénéficier de la facilité de Python pour programmer, tout en ayant accès à toute la puissance de votre ordinateur ou serveur.
Découvrez le multi-threading, le multi-processing et les co-routines pour booster les performances de votre code.
Formations / Communication réseau en Python
Depuis l’apparition d’Internet, la communication réseau est au cœur de notre quotidien.
Découvrez comment exploiter les protocoles de communication réseau les plus classiques (IP, TCP, UDP) avec les sockets et le parallélisme (threads…), le tout en Python.
Posts / Oubliez flake8, black ou venv, place aux outils de nouvelle génération !
Meetup Python Bordeaux Après quelques années d’absence, le meetup Python Bordeaux reprend vie : https://www.meetup.com/py-bdx/events/300614701/. Pour cette reprise, je me suis proposé pour faire un talk nommé : Oubliez flake8, black ou venv, place aux outils de nouvelle génération ! Le tout devant une cinquantaine de personnes passionnées de Python. J’y montre l’utilité des environnements virtuels, des linters et formateurs de code. Et je présente de nouveaux outils faits par https://astral.
Posts / Je publie sur LinkedIn
Je passe à LinkedIn LinkedIn permet de se créer une communauté. Je me suis donc lancé à publier sur LinkedIn. Et je ne publie presque plus ici. Vous pourrez trouver tous mes posts en vous abonnant à mon contenu. Mon profil est directement accessible ici : https://www.linkedin.com/in/vpoulailleau/. J’essaye de publier au moins deux posts par semaine, majoritairement sur du Python. Je vous attends là-bas avec impatience. N’hésitez-pas à commenter les posts, l’interaction est enrichissante.
Posts / Simple is better than complex
Introduction Je vois passer un post sur LinkedIn qui dit : faites le code le plus simple pour afficher : * ** *** **** ***** **** *** ** * Spoiler : ma solution est à la fin et aussi en image. Parmi les réponses que les lecteurs ont fournies (oui, elles ont réellement été proposées), en voici quelques-unes. Solution intuitive pour les débutants 1 2 3 4 for i in range(6): print('*' * i) for i in range(4, 0, -1): print('*' * i) Autre solution moins intuitive, mais compréhensible par les débutants 1 2 3 4 5 for i in range(10): if i <= 5: print('*' * i) else: print('*' * (10 - i)) Solution de la personne payée au nombre de caractères 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 def print_row(n): print("* " * n) def print_top_half(n): for row in range(1, n + 1): print_row(row) def print_bottom_half(n): for row in range(n - 1, 0, -1): print_row(row) def print_triangle(n): print_top_half(n) print_bottom_half(n) triangle_height = 5 print_triangle(triangle_height) Solution sans if 1 2 3 4 5 6 def pyramid(height): for num in range(1, 2 * height + 1): print('*' * min(num, 2 * height - num)) pyramid(5) Solution logique, mais difficile à lire au premier coup d’œil 1 print(*(("* " * x) for x in range(1, 5)), *(("* " * x) for x in range(5, 0, -1)), sep='\n') Solution rusée, mais difficile à lire au premier coup d’œil 1 2 3 from itertools import chain print(*(("* " * x) for x in chain(range(1, 5), range(5, 0, -1))), sep='\n') Un peu dans la même idée 1 2 3 4 5 6 7 8 def print_pattern(): counts = list(range(1,6)) # [1, 2, 3, 4, 5] counts += list(range(4,0,-1)) # [1, 2, 3, 4, 5] + [4, 3, 2, 1] strs = list(map(lambda c: print("*" * c), counts)) print("\n".
Posts / Certifié en Python avec une note de 1000/1000
Certification API Society J’ai eu une note de 1000/1000 à une certification Python. Pour tout dire, mon objectif était d’avoir le niveau « Instructeur », ce qui m’autorise à animer des formations préparant à cette certification. Je parle de https://api-society.com/fr/certifications/technologies-numeriques/developpement-logiciel/fondamentaux-python, certification reconnue par l’état (France Compétences : https://www.francecompetences.fr/recherche/rs/6301/). Les objectifs sont d’attester que vous maîtrisez les bases de Python (types de données basiques, if et boucles, fonctions, modules, paquets, programmation orientée objet, et un peu de la bibliothèque standard).
Posts / Unicode, c'est simple sauf quand c'est compliqué
Unicode, le problème Unicode, c’est simple sauf quand c’est compliqué ! Oui, le texte « Python est génial » n’est pas le même que « Python est génial ». Pourtant il s’affiche pareil ! 1 2 3 4 5 6 7 8 9 10 11 from unicodedata import name, normalize texte1 = "Python est génial" texte2 = "Python est génial" print(texte1 == texte2) # False, WTF! print(texte1.encode("utf-8")) # b'Python est g\xc3\xa9nial' print(texte2.
Posts / TDD et Python
TDD, Java, Python Python, c’est mieux que Java, non ? En vrai, ce qui compte c’est qu’une entreprise soit efficace. Libre à elle de choisir ce qu’elle pense être le mieux. Mais j’ai mon avis sur la question 😉 Et là n’est pas l’objet de ce post, que j’ai écrit après avoir visionné https://m.youtube.com/watch?v=yiCpfd-kz3g C’est une vidéo où Michaël Azerhad essaie de nous montrer comment il est possible de coder plus rapidement avec TDD.
Posts / La conception de www.colorimo.fr
Pourquoi cette présentation ? Ma grande fille, qui vient tout juste de fêter ses 6 ans, s’est lancée dans l’apprentissage de la lecture. Voyant ses difficultés à lire des mots compliqués, j’ai créé un site internet pour aider à la découverte de la lecture. Voici quelques étapes de la conception de www.colorimo.fr. Le concept Sur www.colorimo.fr, un code couleur aide les lecteurs en herbe à déchiffrer les mots. Par exemple, « doigts » ne se lit pas « dohiguetse » mais tout simplement « doi », car « oigts » est en noir, comme tous les sons « oi ».
Posts / Gestionnaires de contexte en Python
Pourquoi cette présentation ? Le but des gestionnaires de contexte est d’écrire moins de code, de faire moins de tests, de faciliter la maintenance et l’évolutivité. Ils s’appliquent à un type d’actions récurrentes décrites ci-dessous. Vous trouverez un exercice corrigé à la fin de cette présentation. Théorie Pourquoi les gestionnaires de contexte ? Les context managers ou gestionnaires de contexte sont apparus dans Python 2.5 avec la PEP 343 il y a une quinzaine d’années.
Posts / Python, le deuxième langage le plus utilisé
Pour la première fois en presque 20 ans, Python devient le deuxième langage de programmation selon l’index TIOBE, un index que beaucoup considèrent comme majeur. Python détrône le Java, et est derrière le langage C, massivement utilisé dans l’embarqué. Le succès de Python a plusieurs origines : C’est un langage facile d’accès : avec peu de notions il est déjà possible de programmer. Python a mis dès le départ l’accent sur la lisibilité.
Posts / Vous programmez en C ?
Si vous pensez bien programmer en C, ne lisez surtout pas l’article suivant : https://ache.one/articles/bizarreries-du-langage-c Vous risqueriez de comprendre des syntaxes valides comme : 1 printf("%d", 2[tab]); Ou encore : 1 printf("%d", ((int[]){5, 4, 5, 2, 1})[i]); Ou également : 1 2 3 4 void foo(char tab[printf("bar")]) { printf("%zu", sizeof tab); } Et même : 1 printf("%d", a ?5??((tab):>:0); J’entends déjà dire que le C est compliqué, mais personne ne vous oblige à écrire du code compliqué (cela va même à l’encontre de la « philosophie » de Python qui dit entre autres « simple est mieux que complexe »).
Posts / On parle de moi dans un podcast américain sur Python
Oui, c’est un titre racoleur… J’apparais dans l’épisode 160 de Python Bytes Podcast, un podcast que j’écoute régulièrement pour me tenir au courant des nouvelles de l’écosystème Python. J’ai prévenu les animateurs du podcast que Guido van Rossum, le créateur de Python, avait décidé de ne plus faire partie du Steering Council, le comité de direction de Python. Je suis cité en tant que source de l’information (oui, c’est tout 😉).
Posts / Première contribution aux logiciels libres
J’ai animé un atelier pour aider des étudiants à faire leur première contribution aux logiciels libres sans avoir le besoin d’être expert en codage. L’heure est au bilan. Quoi ? Atelier « première contribution au logiciel libre » (2 ateliers indépendants de 4 heures chacun) Découverte des logiciels libres Pas besoin d’être un expert pour contribuer Participation à la traduction en français de la documentation officielle de Python python/python-docs-fr et docs.
Posts / Itérateur, itérable, conteneur, générateur, en Python
Je vois régulièrement des confusions entre les termes itérateurs, itérables, conteneurs, générateurs. Voici le schéma à retenir : Vision globale de l’itération Commençons par la notion d’itérable. Un itérable est quelque chose que l’on peut parcourir avec une boucle for : 1 2 for un_élément in un_itérable: faire_quelque_chose_avec(un_élément) Un conteneur est quelque chose qui contient des valeurs (une liste, un dictionnaire, un set…). Un conteneur est généralement itérable (en tout cas, les listes, dictionnaires et sets le sont).
Posts / Utilisez pathlib au lieu d’os.path ou glob
Régulièrement, en programmant en Python, nous sommes amenés à utiliser des chemins de fichiers, de dossiers, et à les manipuler. Python fournit de quoi les manipuler simplement. Contrairement à de la vieille documentation (et sauf raisons valables), vous n’êtes censés utiliser que la nouvelle API fournie par pathlib. À noter aussi que vous n’avez plus à vous préoccuper des slashs ou anti-slashs selon les systèmes d’exploitation, mettez ce que vous voulez, pathlib s’occupe du reste !
Posts / Des messages d’erreur ou de debug en Python
Je suis un des 40 000 abonnés de https://pycoders.com/, une newsletter hebdomadaire de l’écosystème Python. Au moment de Noël, un nouvel email m’arrive : https://pycoders.com/issues/348. Quelle surprise de voir un de mes projets open-source mentionné dans cette newsletter : https://simplelogging.readthedocs.io/en/latest/readme.html. Ce petit projet a pour but de faciliter l’écriture de messages de debug ou d’erreur, le slogan étant « Logging made simple, no excuse for any debug print call. » et est hébergé sur https://github.
Posts / Rédiger de la bonne documentation pour un projet
Pas facile de rédiger une documentation qui répond à tous les besoins tels que : appréhender les bases du projet, savoir se débrouiller avoir une documentation exhaustive trouver facilement la méthode pour résoudre les problèmes classiques … La réponse à cette problématique est : il ne faut pas une documentation mais des documentations. C’est ce que nous explique Daniele Procida dans sa présentation « What nobody tells you about documentation ».
Posts / Des réseaux de neurones pour colorer des photos noir et blanc
À quoi peuvent servir les gros mots comme réseaux de neurones, machine learning, deep learning ? Par exemple à mettre de la couleur dans des photos noir et blanc ou des dessins noir et blanc. Il « suffit » d’apprendre à l’ordinateur à colorier. Voici le projet DeOldify en Python qui fait ce genre de restauration de photos. Je l’ai découvert par https://pythonbytes.fm/episodes/show/105/colorizing-and-restoring-old-images-with-deep-learning.
Posts / Le machine learning, comment ça marche ?
Un ordinateur ça peut apprendre ? Oui, ça fait longtemps que les codes postaux des lettres ne sont plus lus par des humains dans les gros centres de tri, un ordinateur a appris à lire. Le machine learning, c’est facile, il suffit de faire un perceptron, ou une régression, ou un arbre de décision… Plein de gros mots réalisables en quelques lignes de Python. Mais en vrai, comment ça marche ?
Posts / Un code pythonique
Je m’évertue à le répéter, il faut, en Python, écrire du code pythonique, c’est-à-dire qu’il respecte principalement : La PEP 20 : la philosophie de Python (qui peut s’appliquer à beaucoup de langages de programmation), qui dit, entre autres, de ne pas écrire du code moche. Cela peut sembler évident, mais alors pourquoi certains persistent à écrire du code moche ? La PEP 8 : standard de codage de Python, illustré sur https://pep8.
Posts / Python Bytes
Connaissez-vous https://pythonbytes.fm/ ? C’est un podcast génial, américain, hebdomadaire, d’une quinzaine de minutes. Le thème est l’actualité autour de Python, c’est un excellent moyen de se tenir au courant. Pour ceux qui ont des difficultés à écouter de l’américain, ils fournissent des prises de notes par épisodes, par exemple pour l’épisode 101 : https://pythonbytes.fm/episodes/show/101/nobel-prize-awarded-to-a-python-convert. En bref, à consommer sans modération.
Posts / Des expressions régulières lisibles !
J’entends souvent que les expressions régulières ne sont pas lisibles, et c’est effectivement un de leurs gros défauts. Certains disent même qu’elles sont du code qu’on écrit une fois et qu’on ne touche plus ensuite. Mais elles sont tellement puissantes qu’il est difficile de passer à côté. Pour ceux qui veulent des expressions régulières lisibles, en Python, il existe cursive_re (https://github.com/Bogdanp/cursive_re), un générateur d’expressions régulières, que l’on peut combiner ensuite avec le module re de Python.
Posts / AST pour Python
Si vous voulez récupérer un Abstract Syntax Tree d’un programme Python, vous avez le module ast de Python : https://docs.python.org/3/library/ast.html https://greentreesnakes.readthedocs.io/en/latest/ Mais si vous voulez toutes les informations du code (les commentaires par exemple), il faut d’autres outils plus complets, comme RedBaron : https://redbaron.readthedocs.io/en/latest/. De là à faire des modifications en automatique de votre code Python, il n’y a qu’un pas.
Posts / Les métaclasses de Python
Pour se rappeler de comment fonctionnent les métaclasses de Python, voici un bon article : https://realpython.com/python-metaclasses/. Attention toutefois, ils citent Tim Peters l’auteur de la PEP 20 (Zen of Python), la philosophie de Python : Metaclasses are deeper magic than 99% of users should ever worry about. If you wonder whether you need them, you don’t (the people who actually need them know with certainty that they need them, and don’t need an explanation about why).
Posts / Testez votre Python
J’imagine que vous testez déjà votre code, mais voici un site qui rafraîchira la mémoire et affinera les détails : https://realpython.com/python-testing/. En bref à lire et à relire, cela ne fait jamais de mal !
Posts / Raymond Hettinger
Raymond Hettinger est un core developer (ou core dev) de Python. C’est-à-dire qu’il peut changer (committer) le fonctionnement du langage, et ce depuis des dizaines d’années ! Il est aussi formateur en Python, et donne plein de conférences. Je vous conseille de voir toutes les vidéos qu’il a faites, vous y apprendrez forcément quelque chose. Voici quelques-unes de ses vidéos : Beyond PEP8 Transforming code into beautiful, idiomatic Python (attention, c’est du Python 2) Dataclasses: The code generator to end all code generators Modern Python Dictionaries Super considered super Being a Core Developer in Python Et comme Raymond Hettinger le dit :
Posts / Talk Python To Me
Talk Python To Me est un podcast américain sur Python. Michael Kennedy interviewe différentes personnes de la communauté Python. Le niveau de qualité est très bon. Les épisodes durent 45 minutes à une heure. https://talkpython.fm/ https://talkpython.fm/episodes/all