Sébastien CHAZALLET Python 3 - Multimedia.fnac

Transcription

Python 3 - Les fondamentaux du langagePour plusd’informations :ISBN : 978-2-409-00159-8Avant-propos Partie Les atouts de Python :Python dans le paysage informatique Présentation de Python Pourquoi choisir Python Installer son environnement de travail Partie Guide Python : Les premierspas Fonctions et modules Les principauxtypes Les classes Partie Les fondamentaux du langage : Algorithmique de base Déclarations Modèle objet Types de données et algorithmes appliqués Motifs deconception Partie Les fonctionnalités :Manipulation de données Génération decontenu Programmation parallèle Programmation système et réseau Programmation asynchrone Programmation scientifique Bonnes pratiques Partie Miseen pratique : Créer une application web en30 minutes Créer une application consoleen 10 minutes Créer une application graphique en 20 minutes Créer un jeu en30 minutes avec PyGame AnnexesPython 3Les chapitres du livre38,90 sur www.editions-eni.fr :bE xemples de scripts de mise en œuvredes dialogues client/serveur.bE xemples de programmes de créationde tâches et processus.b Code de certains exemples du livre.b Code des applications traitées dans la dernière partie.Expert technique Python / Django / Odooet Web Backend / Frontend, SébastienCHAZALLET intervient en tant qu’indépendant sur de longues missions de développement, d’audit, d’expertise et deformation (www.formation-python.com,www.inspyration.fr). Ses réalisations portent sur des développements autour dePython sur des projets de grande envergure, essentiellement des applications intranet sur mesure avec Django et surOdoo (ex Open ERP), mais également surdes applications de bureau, des scriptssystèmes, la création de sites web ou dee-commerce. A travers ce livre, il a sufaire profiter le lecteur de sa parfaite maîtrise du langage Python dans sa dernièreversion et de l’expérience terrain acquisesur ses différentes missions.Les fondamentaux du langageSébastien CHAZALLETCe livre sur les fondamentaux du langage Python 3 (en version 3.5 au moment del’écriture) s’adresse à tout professionnel de l’informatique, ingénieur, étudiant (etparticulièrement en BTS Services Informatiques Organisations), enseignant oumême autodidacte qui souhaite maîtriser ce langage très abouti. Il couvre un périmètre relativement large, détaille tout le cœur du langage et du traitement de donnéeset ouvre des perspectives importantes sur tout ce que Python 3 permet de faire (dela création d’un site web au développement de jeux en passant par la conceptiond’une interface graphique avec Gtk). Le livre est consacré à la branche 3 de Python,et présente bien sûr les nouveautés apportées par la version 3.5. Toutefois, commele langage Python 2 est encore très présent, lorsqu’elles existent, l’auteur présenteles différences importantes avec la branche antérieure de Python.La première partie du livre détaille les atouts de Python 3 pour répondre aux besoins des entreprises quel que soit le domaine informatique concerné.La seconde partie est un guide à destination des débutants, que ce soit en Pythonou en développement en général, elle permet d’aborder en douceur les concepts clésautour de projets servant de fil rouge et propose la réalisation de quelques exercices.La troisième partie porte sur les fondamentaux du langage : les notions sontprésentées progressivement avec des exemples de code qui illustrent chaque propos. L’auteur a souhaité que le lecteur atteigne une autonomie réelle dans son apprentissage, avec pour chaque notion présentée deux objectifs distincts : permettreà celui qui ne connaît pas la notion de se l’approprier correctement, notamment enrespectant son rôle, et permettre à celui qui la connaît de trouver des angles d’attaques originaux pour aller le plus loin possible dans son exploitation.La quatrième partie permet de voir comment utiliser Python 3 pour résoudre desproblématiques métiers et donc, comment utiliser tout ce qu’il y a autour de Python 3 (protocoles, serveurs, images, ). Dans cette partie, le fil conducteur est lafonctionnalité et non pas le module ; chaque chapitre se concentre sur la manièred’exploiter une fonctionnalité par l’utilisation d’un ou de plusieurs modules et présente une méthodologie, mais n’est pas centré sur une description anatomique desmodules eux-mêmes. Les modules traités dans cette partie sont ceux qui ont étéportés sous Python 3 ainsi que les fonctionnalités aujourd’hui matures pour cettedernière version du langage.Enfin, la dernière partie de l’ouvrage est un vaste tutoriel qui permet de mettre enpratique, dans un cadre professionnel, tout ce qui a été vu précédemment en créantune application qui couvre tous les domaines courants du développement (données, Web avec Pyramid, interface graphique avec Gtk, script système.) et ainsiTéléchargementde présenter des solutions efficaces de développements utilisant Python 3.www.editions-eni.fr.frLe code source des parties 2, 4 et 5 est intégralement téléchargeable sur le sitewww.editions-eni.fr pour permettre au lecteur de tester le programme et de le modifier à sa guise de manière à faire ses propres expériences.Python 3Les fondamentauxdu langage2 éditioneNouvelle éditionSébastien CHAZALLET

1Table des matièresLes éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.frSaisissez la référence ENI de l'ouvrage RI23PYT dans la zone de rechercheet validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.Avant-propos1. Contenu de l’ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312. Progressivité de l'ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323. À destination des enseignants et élèves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334. À destination des chercheurs ou doctorants . . . . . . . . . . . . . . . . . . . . . . . . . 345. À destination de ceux qui viennent d’un autre langage . . . . . . . . . . . . . . . . 35Partie 1 : Les atouts de PythonChapitre 1.1Python dans le paysage informatique1. Petite histoire des langages informatiques . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1 Informatique théorique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2 Chronologie de l’informatique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.1 Évolutions des problématiques liées à l’informatique . . . . . . . .1.2.2 Chronologie des langages informatiques . . . . . . . . . . . . . . . . . .1.3 Histoire de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.1 La genèse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.2 Extension du périmètre fonctionnel. . . . . . . . . . . . . . . . . . . . . .1.3.3 Évolution de la licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.4 Avenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .373737373943434344442. Typologie des langages de programmation . . . . . . . . . . . . . . . . . . . . . . . . . .2.1 Paradigmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.2 Paradigme impératif et dérivés . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.3 Paradigme objet et dérivés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.4 Programmation orientée aspect . . . . . . . . . . . . . . . . . . . . . . . . .2.1.5 Paradigme fonctionnel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.6 Paradigme logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4545454646474747

2Python 3Les fondamentaux du langage2.22.32.42.52.1.7 Programmation concurrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.1.8 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Interopérabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Niveau de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.3.1 Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.3.2 Bas niveau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.3.3 Haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Typage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.4.1 Faible vs fort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.4.2 Statique vs dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Grammaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.5.1 Langages formels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.5.2 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543. Python et le reste du monde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.1 Positionnement stratégique du langage Python . . . . . . . . . . . . . . . . . . 543.1.1 Segments de marchés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.1.2 Niveau de complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.1.3 Forces du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1.4 Points faibles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.2 Intégration avec d’autres langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.2.1 Extensions C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.2.2 Intégration de programmes écrits en C . . . . . . . . . . . . . . . . . . . 563.2.3 Intégration de programmes Python dans du C . . . . . . . . . . . . . 563.2.4 Intégration de programmes écrits en Java . . . . . . . . . . . . . . . . . 563.2.5 Intégration de programmes Python dans Java . . . . . . . . . . . . . . 563.2.6 Autres intégrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Chapitre 1.2Présentation de Python1. Philosophie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591.1 Python en quelques lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591.1.1 D’où vient le nom « Python » ? . . . . . . . . . . . . . . . . . . . . . . . . . . 591.1.2 Présentation technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591.1.3 Présentation conceptuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601.2 Comparaison avec d’autres langages . . . . . . . . . . . . . . . . . . . . . . . . . . . 601.2.1 Shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601.2.2 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

3Table des matières1.2.3 C, C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.4 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.5 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3 Grands principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.1 Le zen de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.2 Le développeur n’est pas stupide . . . . . . . . . . . . . . . . . . . . . . . .1.3.3 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.4 Python est livré piles incluses . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.5 Duck Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.6 Notion de code pythonique . . . . . . . . . . . . . . . . . . . . . . . . . . . .616264646465666666662. Gouvernance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.1 Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.2 Communauté. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2 Mode de gouvernance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2.1 Créateur du langage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2.2 PEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2.3 Prise de décisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67676767686868683. Que contient Python ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.1 Une grammaire et une syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.2 Plusieurs implémentations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.3 Une bibliothèque standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.4 Des bibliothèques tierces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.5 Des frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6969697070704. Phases d’exécution d’un programme Python. . . . . . . . . . . . . . . . . . . . . . . . .4.1 Chargement de la machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . .4.2 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.3 Interprétation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70707071Chapitre 1.3Pourquoi choisir Python1. Qualités du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1 Ticket d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2 Qualités intrinsèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3 Couverture fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.4 Domaines d’excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7373747576

4Python 3Les fondamentaux du langage1.5 Garanties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772. Diffusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.1 Entreprises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.2 Le monde de la recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792.3 Le monde de l’éducation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802.4 Communauté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813. Références. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.1 Poids lourds de l’industrie informatique . . . . . . . . . . . . . . . . . . . . . . . . 823.1.1 Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.1.2 Mozilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.1.3 Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.1.4 Canonical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.1.5 Cisco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.2 Entreprises innovantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.2.1 Services de stockage en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.2.2 Informatique dématérialisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.2.3 Forge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.2.4 Réseaux sociaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.3 Éditeurs de contenus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.3.1 Disney Animation Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.3.2 YouTube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.3.3 Box ADSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.3.4 Spotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.4 Éditeurs de logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854. Retours d’expérience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.1 Internet des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.2 Système et développement web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874.3 Enseignement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874.4 Embarqué. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884.5 Développement web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.6 ERP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5Table des matièresChapitre 1.4Installer son environnement de travail1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912. Installer Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1 Pour Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2 Pour Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3 Pour GNU/Linux et BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4 Par la compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5 Pour un smartphone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9191949495963. Installer une bibliothèque tierce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.1 À partir de Python 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.2 Pour une version inférieure à Python 3.4 . . . . . . . . . . . . . . . . . . . . . . .3.3 Pour Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .969698984. Créer un environnement virtuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.1 À quoi sert un environnement virtuel ? . . . . . . . . . . . . . . . . . . . . . . . . 994.2 Pour Python 3.3 ou version supérieure . . . . . . . . . . . . . . . . . . . . . . . . . 994.3 Pour toute version de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.4 Pour Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015. Installer Anaconda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5.1 Pour Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5.2 Pour Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5.3 Pour Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5.4 Mettre à jour Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5.5 Installer une bibliothèque externe . . . . . . . . . . . . . . . . . . . . . . . . . . . .5.6 Environnements virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1021021051051061061066. La console Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.1 Démarrer la console Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.2 BPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.3 IPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.4 IPython Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1061061071071087. Installer un IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7.1 Liste d'IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7.2 Présentation de PyCharm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7.3 Configuration de PyCharm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108108109109

6Python 3Les fondamentaux du langagePartie 2 : Guide PythonChapitre 2.1Les premiers pas1. Avant de commencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151.1 Quelques notions importantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151.1.1 Comment fonctionne un ordinateur ? . . . . . . . . . . . . . . . . . . . 1151.1.2 Qu'est-ce qu’un programme informatique ? . . . . . . . . . . . . . . 1161.1.3 Qu'est-ce qu'un code source ? . . . . . . . . . . . . . . . . . . . . . . . . . . 1161.2 Quelques conventions utilisées dans ce livre . . . . . . . . . . . . . . . . . . . 1161.2.1 Code Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161.2.2 Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171.2.3 Mise en forme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171.3 Quelle est la meilleure méthode pour apprendre ? . . . . . . . . . . . . . . . 1182. Premier programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182.1 Hello world ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182.2 Affectation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202.3 Valeur booléenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212.4 Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222.5 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232.6 Bloc conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262.7 Conditions avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272.8 Bloc itératif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283. Premier jeu : Devine le nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.1 Description du jeu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.2 Aides. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.2.1 Gestion du hasard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.2.2 Étapes de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.3 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7Table des matièresChapitre 2.2Fonctions et modules1. Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1 Pourquoi utiliser des fonctions ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2 Introduction aux fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.1 Comment déclarer une fonction. . . . . . . . . . . . . . . . . . . . . . . .1.2.2 Gestion d'un paramètre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2.3 Comment rendre une fonction plus générique . . . . . . . . . . . .1.2.4 Paramètres par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3 Problématiques de couplage et duplication de code . . . . . . . . . . . . . .1.3.1 Niveau de ses fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.2 Notion de complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3.3 Bonnes pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1331331351351361381401411411431452. Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.1 Qu'est-ce qu'un module ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.2 Comment crée-t-on un module Python ? . . . . . . . . . . . . . . . .2.1.3 Organiser son code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2 Gérer le code de ses modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2.1 Exécuter un module, importer un module . . . . . . . . . . . . . . . .2.2.2 Gérer une arborescence de modules . . . . . . . . . . . . . . . . . . . . .1461461461471471471471483. Terminer le jeu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.1 Créer des niveaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.2 Déterminer un nombre de coups maximal . . . . . . . . . . . . . . . . . . . . .3.3 Enregistrer les meilleurs scores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.4 Intelligence artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149149150150150Chapitre 2.3Les principaux types1. Chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2 Formatage d'une chaîne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3 Notion de casse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.4 Notion de longueur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.5 Appartenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.6 Notion d’occurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151151152153153154154

8Python 3Les fondamentaux du langage1.71.81.91.10Remplacement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Notion de caractère. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Typologie des caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Séquencer une chaîne de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572. Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.2 Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.3 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592.4 Hasard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1602.5 Techniques d'itération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612.6 Tri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633. Dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653.1 Présentation des dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653.2 Parcourir un dictionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1663.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Chapitre 2.4Les classes1. Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1692. Notion d'instance courante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703. Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1724. Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744.1 Spécialisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744.2 Programmation par composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175Partie 3 : Les fondamentaux du langageChapitre 3.1Algorithmique de base1. Délimiteurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1771.1 Instruction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1771.2 Une ligne de co

Python 3 Les fondamentaux du langage 38,90 ISBN : 978-2-409-00159-8 Sébastien CHAZALLET Ce livre sur les fondamentaux du langage Python 3 (en version 3.5 au moment de l'écriture) s'adresse à tout professionnel de l'informatique, ingénieur, étudiant (et particulièrement en BTS Services Informatiques Organisations), enseignant ou même autodidacte qui souhaite maîtriser ce .