Think Python, 3e édition
(allendowney.github.io)- Introduction à Python destinée aux personnes qui découvrent la programmation ou qui ont rencontré des difficultés lors d’un apprentissage précédent, avec possibilité de commander la 3e édition en version papier ou ebook
- Le livre entier est proposé sous forme de notebooks Jupyter, ce qui permet de lire le texte, exécuter le code et faire les exercices dans un seul et même flux
- Les notebooks de chaque chapitre peuvent être exécutés directement dans Colab, ce qui facilite le démarrage sans installation supplémentaire
- La 3e édition réorganise le parcours d’apprentissage grâce à une révision du texte, un ajustement de l’ordre de certains chapitres et un enrichissement des exercices
- Les suggestions d’usage de ChatGPT et de Colab AI en fin de chapitre servent d’outils d’appui pour obtenir des explications supplémentaires et de l’aide sur les exercices lorsqu’on bloque
Une introduction à Python pour les débutants
- Think Python est une introduction à Python destinée aux personnes qui découvrent la programmation, ou à celles qui ont déjà essayé auparavant mais ont rencontré des difficultés
- La 3e édition, en version papier et ebook, peut être commandée sur Bookshop.org et Amazon
- La page de présentation du livre chez Green Tea Press est disponible sur Think Python 3rd Edition
- La 3e édition compose l’ensemble du livre en notebooks Jupyter, réunissant en un seul endroit le texte, le code exécutable et les exercices
- Les notebooks peuvent être exécutés dans Colab, ce qui réduit les contraintes d’installation
- Le texte a été largement révisé et l’ordre de certains chapitres a été réorganisé
- Le nombre d’exercices a augmenté
- La fin de chaque chapitre inclut des indications sur l’usage de ChatGPT et de Colab AI pour l’apprentissage et la résolution des exercices
Notebooks Colab et ressources pour l’enseignement
-
Notebooks par chapitre
- L’ensemble des notebooks couvre 19 chapitres
- Chapitre 1 : Programming as a way of thinking — Exécuter dans Colab
- Chapitre 2 : Variables and Statements — Exécuter dans Colab
- Chapitre 3 : Functions — Exécuter dans Colab
- Chapitre 4 : Functions and Interfaces — Exécuter dans Colab
- Chapitre 5 : Conditionals and Recursion — Exécuter dans Colab
- Chapitre 6 : Return Values — Exécuter dans Colab
- Chapitre 7 : Iteration and Search — Exécuter dans Colab
- Chapitre 8 : Strings and Regular Expressions — Exécuter dans Colab
- Chapitre 9 : Lists — Exécuter dans Colab
- Chapitre 10 : Dictionaries — Exécuter dans Colab
- Chapitre 11 : Tuples — Exécuter dans Colab
- Chapitre 12 : Text Analysis and Generation — Exécuter dans Colab
- Chapitre 13 : Files and Databases — Exécuter dans Colab
- Chapitre 14 : Classes and Functions — Exécuter dans Colab
- Chapitre 15 : Classes and Methods — Exécuter dans Colab
- Chapitre 16 : Classes and Objects — Exécuter dans Colab
- Chapitre 17 : Inheritance — Exécuter dans Colab
- Chapitre 18 : Python Extras — Exécuter dans Colab
- Chapitre 19 : Final Thoughts — Exécuter dans Colab
-
Ressources pour les enseignants
- Les notebooks avec corrigés peuvent être téléchargés depuis le dépôt GitHub ThinkPythonSolutions
- Des quiz pour chaque chapitre ainsi qu’un quiz récapitulatif sur l’ensemble du livre sont disponibles sur demande
- Des conseils pour utiliser efficacement Jupyter en cours sont disponibles dans le livre en ligne Teaching and Learning with Jupyter
- Dans un cours fondé sur des notebooks, on peut utiliser une approche de live coding où l’enseignant écrit le code et les étudiants le reproduisent dans leur propre notebook
- Des ressources de formation pour les enseignants en programmation sont disponibles dans Instructor Training de The Carpentries
- Des notebooks vierges qui conservent le texte d’origine tout en supprimant la majeure partie du code sont utiles pour des exercices à trous à reproduire, et sont répertoriés sur blank notebooks
1 commentaires
Avis de Hacker News
Je suis vraiment ravi de cette nouvelle. Quand nous avons publié Practical Deep Learning for Coders sous forme de Jupyter Notebook, j’avais parlé avec Allen de faire la même chose pour certains de ses livres
Maintenant c’est réellement en cours, et mieux encore, ils y ont ajouté des outils sympas comme une turtle basée sur Jupyter, qui affiche des graphiques en ligne dans le notebook
Une fois publié, je pense que cela a de grandes chances de devenir la meilleure façon d’apprendre la programmation Python
Je me souviens avoir montré autrefois une preuve de concept qui convertissait une partie de la 2e édition de ce livre en notebooks nbdev : https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
Ce notebook est rendu en HTML ici : https://fastai.github.io/nbdev_cards/deck.html
Quand j’apprends un nouveau langage avec des choses comme AdventOfCode, ma première tâche est toujours de créer une image Jupyter pour ce langage
La 2e édition de Think Python a changé le cours de ma vie. J’avais suivi un cours de Java, je l’avais détesté au point d’abandonner la programmation, puis quelques années plus tard, en travaillant comme ingénieur réseau, je suis tombé sur un problème qui semblait pouvoir se résoudre avec un script ; j’ai pris Think Python, et je suis tombé amoureux de Python et de la programmation elle-même
Je réfléchis à orienter ma vie vers des rôles de communauté/maker/enseignant, et j’ai une idée d’activité freelance/petite entreprise autour de l’enseignement, mais il me faut du matériel de type « programme souple »
Pendant que je travaillais comme développeur web professionnel, je n’ai jamais eu besoin de Python, donc je suis en train de l’apprendre. J’ai utilisé à peu près tous les langages centrés web, y compris Perl et Ruby
Python me semble être un langage adapté pour enseigner les concepts généraux, et disposer d’un livre de référence devrait aider
À peu près à cette époque, Java est devenu le langage principal de l’équipe, et après avoir vu les avantages du typage statique, je n’ai plus pu revenir en arrière
Depuis, Python a beaucoup progressé grâce à la prise en charge optionnelle des types et aux IDE qui peuvent les faire respecter, mais aujourd’hui je penche complètement vers les langages à typage statique
Pour écrire des scripts utilitaires, j’aime toujours Python, bien plus raffiné que d’utiliser seulement bash. Mais si je peux choisir un langage pour une application aboutie, je préfère Java/Scala, etc. Rust est excellent aussi, mais sa courbe d’apprentissage est trop raide pour la plupart des gens ordinaires
Je n’ai jamais vraiment utilisé le typage optionnel de Python avec des outils comme PyCharm, donc il est possible que l’outillage rende l’expérience proche de celle d’un langage à typage statique. Si quelqu’un a utilisé IntelliJ Community Edition avec la vérification des types Python activée, j’aimerais connaître son retour
J’aime Think Python et je l’ai recommandé à beaucoup d’apprenants. Il équilibre vraiment bien les nombreux aspects auxquels un livre pour nouveaux programmeurs doit faire attention
Allen Downey a publié plusieurs autres livres dans une approche similaire : https://greenteapress.com/wp/
Certains vont à mon avis un peu trop loin dans la réduction de la rigueur, mais dans l’ensemble, les livres que j’ai consultés étaient plutôt bons
J’ai partagé une table avec Allen lors d’une conférence il y a quelque temps, et quand je lui ai dit à quelle fréquence j’avais recommandé ou acheté ses livres pour d’autres, il a dû penser que j’exagérais
Désolé de faire légèrement dériver le sujet, mais en supposant qu’on ait déjà de l’expérience pratique et qu’on continue à en acquérir au travail, existe-t-il des ressources de qualité comparable pour un développeur Python intermédiaire/avancé ?
J’ai toujours l’impression qu’il y a de gros pans du langage ou de la bibliothèque standard que je ne connais pas
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/library/index.html
À chaque nouvelle version, je lis les documents What’s New
À part ça, j’aime lire le code source de la bibliothèque standard et de paquets tiers populaires. Ce conseil vaut globalement aussi au-delà de Python, quand on apprend un nouveau langage ou qu’on s’y remet
Et rien qu’en lisant les implémentations annuelles d’Advent of Code par Norvig, on obtient souvent des idées sur la façon d’écrire du code Python élégant et concis
L’auteur publie sur son blog ses projets Python récents, principalement des travaux d’analyse bayésienne des données, à l’adresse https://www.allendowney.com/blog/, et je trouve ça assez intéressant à suivre.
Quels livres recommander pour passer d’un niveau intermédiaire à avancé en programmation Python ? Je connais déjà Python et la programmation en général, mais j’aimerais renforcer mes compétences en Python.
Pour l’instant, je ne connais que Fluent Python et CPython Internals, que je suis en train de lire.
Par exemple, Effective Pandas 2 présente des patterns courants pour manipuler des données tabulaires. Au passage, il utilise les compréhensions, les lambdas, le dépaquetage, etc., et montre aussi comment refactorer avec pytest et exploiter la visualisation pour comprendre les données.
Pour info, j’en suis l’auteur.
Fluent Pythonsuffit. Pour les autres fonctionnalités du langage, lire le manuel de référence officiel permet de les comprendre.Il y a aussi beaucoup d’articles très malins sur https://www.redblobgames.com/.
C’est un livre peu connu, mais qui explore plusieurs styles de programmation pour résoudre le même problème sous différentes contraintes.
Une fois qu’on a atteint un certain niveau, c’est-à-dire dépassé le niveau de base d’un praticien, il ne reste plus que lire et écrire du code.
Articles liés :
Think Python 2e - https://news.ycombinator.com/item?id=35421096 - avril 2023, 30 commentaires
Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - août 2010, 9 commentaires
Quelle chance. Je viens tout juste de commencer du mentorat Python, et je suis un grand fan de Downey. C’est vraiment un éducateur remarquable et un esprit de la Renaissance.
Je vais suivre ce livre de très près.
Moi aussi, ce livre a changé ma vie quand j’ai appris la programmation pour la première fois. Ce n’était pas tant un changement de carrière ; c’est surtout la manière dont le livre était écrit, et la façon dont certains concepts sont soudain devenus compréhensibles pour le parfait débutant que j’étais.
Maintenant, en voyant cette 3e édition 10 à 15 ans plus tard, je ressens une forte nostalgie, et je ne recommanderai jamais assez ce livre.
Dans l’édition précédente de Think Java, j’aimais particulièrement ce passage : https://files.catbox.moe/v1vgdc.jpg
Un autre passage formidable est celui-ci :