Le langage Python Table des matières Chapitre 1. Introduction 9 1.1. Le public

Le langage Python Table des matières Chapitre 1. Introduction 9 1.1. Le public visé 9 1.2. Pourquoi Python ? 10 1.3. Caractéristiques du langage 12 1.4. Domaines d’application 14 1.5. Conventions 15 1.6. La documentation Python 15 1.7. Style de programmation 15 Conventions de nommage 15 Conventions d’écriture 16 1.8. Exécution d’une session Python interactive 16 Exécution en ligne de commande 16 Exécution par script (ou module) 19 Les éditeurs Python 20 Les environnements complets 20 Déboguer un programme 23 Exercices 25 Solutions des exercices 25 Chapitre 2. Premiers pas 29 2.1. Pour vérifier votre installation 29 2.2. Aide en ligne, dir() et help() 30 2.3. Commentaires 31 2.4. Indentation 31 2.5. Variables, types 32 2.6. Opérations 35 2.7. Chaînes de caractères 36 2.8. Listes 39 2.9. Dictionnaires 41 2.10. Lecture-écriture sur fichier 42 Le module pickle 43 2.11. Fonctions 44 2.12. Documentation et tests 45 2.12.1. Tests dans le fichier module 46 2.12.2. Tests dans un fichier séparé 49 4 Chapitre 0. Table des matières Exercices 50 Solutions des exercices 52 Chapitre 3. Structures de contrôle 59 3.1. L’instruction while 59 3.2. L’instruction if, else, elif 60 3.3. L’instruction for 61 3.4. Les conditions 62 3.4.1. Valeurs booléennes 62 3.4.2. Opérateurs de comparaisons 63 3.4.3. Comparaisons hétérogènes 64 3.5. Les techniques de boucles 65 3.5.1. La fonction range() 65 3.5.2. Les méthodes dict.keys(), dict.values() et dict.items() 66 3.5.3. La fonction enumerate() 66 3.5.4. La fonction zip() 66 3.5.5. La fonction reversed() 67 3.5.6. La fonction sorted() 67 3.5.7. La fonction map() 67 3.5.8. La fonction filter() 68 3.5.9. Les list comprehension 68 Exercices 69 Solutions des exercices 71 Chapitre 4. Les types intégrés (builtins) 79 4.1. Les variables Python 79 4.2. Les types numériques (int, float, complex) 81 4.3. Itérateurs et générateurs 82 4.3.1. Définition 82 4.3.2. Itérateurs 83 4.3.3. Générateurs 84 4.3.4. Expressions génératrices 85 4.4. Les séquences tuples et list 85 4.4.1. Les tuples 85 4.4.2. Le découpage (slicing) 87 4.4.3. Les listes 88 4.5. Les chaînes de caractères (str, bytes, bytearray) 90 4.5.1. Identification et codage des caractères 90 4.5.2. Comparatif sommaire Python 2 et 3 92 4.5.3. Encodage et décodage 94 4.5.4. Manipulations usuelles 94 4.5.5. Le module string 95 4.5.6. Formatage 96 5 4.5.7. Autres fonctionnalisés pour le 99 4.6. Les ensembles (set et frozenset) 99 4.7. Les dictionnaires (dict) 100 4.8. Les exceptions (exceptions) 101 Exercices 103 Solutions des exercices 107 Chapitre 5. Fonctions, scripts et modules 117 5.1. Fonctions 117 5.1.1. Exemple détaillé 118 5.1.2. Passage d’arguments 119 5.1.3. Les formes lambda 122 5.2. Règles de portée 123 5.2.1. Espace de noms 123 5.2.2. Portée, la règle LGI 124 5.3. Modules et paquetages 125 5.3.1. Modules 125 5.3.2. Paquetages 127 5.3.3. Le chemin de recherche des paquetages et modules 128 5.3.4. Fichiers bytecode 128 5.3.5. Modules standard 128 5.4. Décorateurs 129 5.5. Fonctions intégrées, le module __builtin__ 130 5.5.1. Manipulation d’attributs 130 5.5.2. Conversion de type, construction 131 5.5.3. Logique 132 5.5.4. Programmation 132 5.5.5. Itérables 133 5.5.6. Entrées-sorties 135 5.5.7. Classes 137 5.5.8. Mathématiques 137 5.5.9. Divers 137 Exercices 138 Le format IGC (International Gliding Commission) 143 Solutions des exercices 144 Chapitre 6. Programmation orientée objet 153 6.1. Une première approche des classes 153 6.1.1. Syntaxe 154 6.1.2. Une classe Complexe 154 6.1.3. Objets Classes 155 6.1.4. Objets Instances 155 6.1.5. Objets Méthodes 156 6 Chapitre 0. Table des matières 6.1.6. Quelques remarques 156 6.2. Héritage simple, multiple 157 6.2.1. Héritage ou pas ? 158 6.2.2. Exemple de la classe Polygone TODO : commenter 158 6.2.3. Surcharge 159 6.2.4. Héritage multiple 160 6.3. La classe object 160 6.4. Méthodes spéciales 161 6.5. Variables privées 162 6.6. Les properties 162 6.7. Manipulation dynamique des attributs 164 6.8. Slots 165 Exercices 166 Solutions des exercices 170 Chapitre 7. La bibliothèque standard 177 7.1. Le module os 177 7.1.1. Le module os.path 178 7.1.2. Autres services du module os 179 7.2. Le module sys 179 7.3. Dates et heures TODO 180 7.4. Fichiers 181 7.4.1. Le module glob 181 7.4.2. Le sous module glob.fnmatch 181 7.4.3. Le module shutil 181 7.5. Compression de données TODO 182 7.6. Arguments de la ligne de commande 182 7.7. Mesure des performances 183 7.7.1. Le module time 183 7.7.2. Le module timeit 184 7.7.3. Les modules profile, cProfile et pstats 185 7.7.4. Le module unittest TODO 187 7.8. Calcul scientifique 187 7.8.1. Le module math 187 7.8.2. Le module cmath 189 7.8.3. Le module random 189 7.8.4. 190 7.9. Autres modules 190 Exercices TODO 191 Solutions des exercices 192 Chapitre 8. Python pour le calcul scientifique 197 8.1. NumPy 197 7 8.1.1. Méthodes et fonctions de NumPy 197 8.1.2. Les bases de Numpy 198 8.1.3. Création de tableaux 199 8.1.4. Opérations sur les tableaux 200 8.1.5. Indiçage, découpage, itérations sur les tableaux 201 8.1.6. Remodelage des tableaux 203 8.1.7. Empilage de tableaux 204 8.1.8. Copies et vues 205 8.1.9. Quelques fonctions plus évoluées 206 8.1.10. Algèbre linéaire de base 208 8.2. Scipy 209 8.3. Calcul formel avec Sage 209 8.4. C/C++ en Python 209 8.4.1. Écrire en Python, relire en C++ (binaire) 210 8.4.2. pyrex, cython 212 8.4.3. ctypes, swig 216 8.4.4. boost 216 8.4.5. shiboken TODO 216 8.4.6. weave 217 8.5. Visualisation de données 217 8.5.1. matplotlib, pylab 217 8.5.2. SciTools, EasyViz 217 8.5.3. Vtk 217 8.5.4. Mayavi 218 8.5.5. Paraview 218 Exercices 218 Solutions des exercices 220 Index 229 Bibliographie 233 CHAPITRE 1 Introduction 1.1. Le public visé Cet ouvrage s’adresse à un public ayant déjà programmé, et curieux d’apprendre Python. Une habitude de la programmation dans un langage procédural ou fonctionnel, comme Fortran, C++ ou C ou encore Scilab, Matlab, etc. est préférable avant d’en aborder la lecture. Les principes de programmation orientée objet utiles sont suffisamment détaillés dans le chapitre consacré aux classes pour servir de cours d’initiation. Cet ouvrage a été bâti à partir de notes assemblées pour des cours et des formations Python que j’ai assuré à l’Université de Pau, en formation interne, en Master de Mathématiques Appliquées et lors de diverses interventions. Ces notes ont été largement inspirées des ouvrages ou sites internet cités dans la bibliographie. J’y ai bien sûr rajouté ma touche personnelle au cours des formations, en fonction des difficultés rencontrées par le public. Étant mathématicien de formation, ma connaissance des concepts informatiques est ancienne et essentiellement expérimentale. Mon approche du langage Python pourra sembler naïve aux informaticiens de métier. Elle l’est. Il m’a paru intéressant de m’attarder sur certains concepts contre lesquels j’ai longtemps achoppé, et de faire profiter le lecteur de ce point de vue naïf. Le point de vue que je tente de développer s’est en tout cas montré efficace pour les tâches de programmation auxquelles j’ai été confronté. Cet ouvrage vise un public d’utilisateurs d’infor- matique, et non pas un public de concepteurs d’informatique. Les puristes me pardonneront donc cette incursion dans leur domaine et les imprécisions ou er- reurs qu’ils relèveront. La version 3 de Python est en principe utilisée tout au long de cet ouvrage. La rédaction en a commencé alors que Python 2 était seul disponible, aussi, malgré le soin apporté à la rédaction et à la relecture, il est possible que quelques incompatibilités demeurent dans le cours du texte, les exercices proposés ou leur solution. Toute remarque, correction ou suggestion sera la bienvenue par mail à l’adresse pierre@puiseux.name. Les différences essentielles entre Python 2 et Python 3 seront soulignées au cours de l’exposé. 10 Chapitre 1. Introduction 1.2. Pourquoi Python ? Python est un langage de programmation récent (apparu en 1990) et dont une des caractéristiques essentielle est la facilité de lecture et d’écriture. Voici un exemple simple qui illustre bien ceci : supposons que l’on veuille créer une liste des carrés des entiers compris entre -5 et 12, puis la faire afficher à la console. Voici un programme C++ qui effectue cette tâche : 1 #include <iostream> 2 int main() 3 { 4 int l[18] ; 5 for (int i=0 ; i<18 ; i++) 6 { 7 int x(i-5) ; 8 l[i] = x*x ; 9 } 10 for (int i=0 ;i<18 ;i++) 11 std ::cout << l[i] << ", " ; 12 std ::cout << std ::endl ; 13 return 0 ; 14 } Et voici l’équivalent Python : 1 l = [x*x for x in range(-5,13)] 2 print(l) Ce programme Python, outre sa concision, propose une lisibilité optimale. Il est en effet inutile d’être un programmeur chevronné pour comprendre qu’il crée la liste l des x2 pour x dans l’in- tervalle [−5, 13] (ou bien [−5, 13[ ?), puis qu’il imprime la liste l. Mark Lutz, dans [ML] dans nous met en garde : « You should be warned, though once you start using Python, you may never want to go back. » Pour avoir une idée plus précise de la philosophie qui sous-tend le langage, dans un shell Python, importons le module this (voir 1.8 page 16). On obtient ce texte : « The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit uploads/Litterature/ python-1.pdf

  • 22
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager