Avant-propos
xix
Part 1. Les bases de Python
1. Un avant-goût de Python
3
Mystères3
Petits programmes5
Un programme plus important7
Python dans le monde réel11
Python contre le langage de la Planète X12
Pourquoi Python ?14
Pourquoi pas Python ?16
Python 2 contre Python 317
Installer Python18
Exécuter Python18
Utilisation de l'interpréteur interactif18
Utilisation de fichiers Python19
Comment aller plus loin ?20
Votre moment de zénitude20
À venir21
À faire21
2. Données : Types, Valeurs, Variables et Noms
23
Les données Python sont des objets23
Les types25
Mutabilité25
Valeurs littérales26
Variables26
Affectation28
Les variables sont des noms, pas des emplacements29
Attribution à plusieurs noms33
Réattribuer un nom33
Copier33
Choisir de bons noms de variables34
À venir35
À faire35
3. Nombres
37
Booléens38
Entiers38
Entiers littéraux38
Opérations sur les nombres entiers40
Entiers et variables41
Précédence43
Bases44
Conversions de type47
Quelle est la taille d'un int ?49
Flottants49
Fonctions mathématiques51
À venir51
À faire51
4. Choisir avec if
53
Commentaire avec #53
Continuation de lignes avec \54
Comparer avec if, elif et else55
Qu'est-ce qui est True ?58
Faites plusieurs comparaisons avec in59
Nouveau : l'opérateur morse60
À venir61
À faire61
5. Chaînes de texte
63
Créer des chaînes avec des guillemets64
Créer des chaînes avec str()66
Échapper avec \66
Combiner en utilisant +68
Dupliquer avec *68
Extraire un caractère avec []69
Extraire une sous-chaîne avec une tranche70
Obtenir la longueur avec len()72
Scinder avec split()72
Combiner avec join()73
Remplacer avec replace()73
Tronquer avec strip()74
Rechercher et sélectionner75
Casse76
Alignement77
Formatage78
Ancien style : %78
Nouveau style : {} et format()81
Style le plus récent : f-strings82
Compléments à propos des chaînes83
À venir84
À faire84
6. Boucles avec for et while
87
Répéter avec while87
Interrompre avec break88
Passer avec continue88
Vérifier l'utilisation de break avec else89
Itérer avec for et in89
Annuler avec break90
Passer avec continue90
Vérifier l'utilisation de break avec else90
Générer des séquences de nombres avec range()91
Autres itérateurs92
À venir92
À faire92
7. Tuples et Listes
93
Tuples93
Création avec des virgules et ()94
Création avec tuple()95
Combiner des tuples à l'aide de +95
Dupliquer les éléments avec *96
Comparer les tuples96
Itérer avec for et in96
Modifier un tuple96
Listes97
Création avec []97
Créer ou convertir avec list()98
Créer à partir d'une chaîne avec split()98
Extraire un élément par [indice]98
Extraire des éléments avec des tranches99
Ajouter un élément à la fin avec append()100
Insérer un élément par position avec insert()100
Dupliquer tous les éléments avec *101
Combiner des listes à l'aide de extend() ou +101
Modifier un élément par [indice]101
Modifier des éléments avec une tranche102
Supprimer un élément par position avec del102
Supprimer un élément par valeur avec remove()103
Obtenez un élément par position et supprimez-le avec pop()103
Supprimer tous les éléments avec clear()104
Rechercher le décalage d'un élément par valeur avec index()104
Tester une valeur avec in104
Compter les occurrences d'une valeur avec count()105
Convertir une liste en chaîne avec join()105
Réorganiser les éléments avec sort() ou sorted()106
Obtenir la longueur avec len()106
Assignation avec =107
Copier avec copy(), list() ou une tranche107
Tout copier avec deepcopy()108
Comparer des listes109
Itérer avec for et in109
Itérer plusieurs séquences avec zip()110
Créer une liste avec une compréhension111
Listes de listes114
Tuples et listes114
Il n'y a pas de compréhensions de tuple115
À venir115
À faire 1l5
8. Dictionnaires et Ensembles
117
Dictionnaires117
Créer avec {}117
Créer avec dict()118
Convertir avec dict()119
Ajouter ou modifier un élément par [clé]119
Obtenir un élément par [clé] ou avec get()121
Obtenir toutes les clés avec keys()121
Obtenir toutes les valeurs avec values()122
Obtenir toutes les paires clé-valeur avec items()122
Obtenir la longueur avec len()122
Combiner des dictionnaires avec {**a, **b}122
Combinez des dictionnaires avec update()123
Supprimer un élément par clé avec del124
Obtenir un élément par clé et le supprimer avec pop()124
Supprimer tous les éléments avec clear()124
Tester une clé avec in125
Assigner avec =125
Copier avec copy()125
Tout copier avec deepcopy()126
Comparer des dictionnaires127
Itérer avec for et in127
Compréhensions de dictionnaire128
Ensembles129
Créer avec set()130
Convertir avec set()130
Obtenir la longueur avec len()131
Ajouter un élément avec add()131
Supprimer un élément avec remove()131
Itérer avec for et in132
Tester une valeur avec in132
Combinaisons et opérateurs133
Compréhensions d'ensemble136
Créer un ensemble immuable avec frozenset()136
Structures de données jusqu'à présent136
Créez de plus grosses structures de données137
À venir138
À faire138
9. Fonctions
141
Définir une fonction avec def141
Appeler une fonction avec les parenthèses142
Arguments et paramètres142
None est utile144
Arguments de position145
Arguments par mots-clés146
Spécifier des valeurs de paramètre par défaut146
Exploser/réunir des arguments positionnels avec *147
Exploser/réunir les arguments à mots-clés avec **149
Arguments uniquement avec mots-clés150
Arguments modifiables ou immuables151
Docstrings152
Les fonctions sont des citoyens de première classe152
Fonctions internes154
Closures155
Fonctions anonymes : lambda156
Générateurs157
Fonctions génératrices157
Compréhensions génératrices158
Décorateurs159
Espaces de noms et portée161
Utilisations de _ et dans les noms163
Récursion164
Fonctions asynchrones165
Les exceptions165
Gérer les erreurs avec try et except166
Créez vos propres exceptions167
À venir168
À faire168
10. Oh Oh : Objets et Classes
169
Que sont les objets ?169
Objets simples170
Définir une classe avec class170
Les attributs171
Méthodes172
Initialisation172
Héritage174
Hériter d'une classe parente174
Surcharger une méthode175
Ajouter une méthode176
Obtenir de l'aide du parent avec super()177
Héritage multiple178
Mixins180
En défense de self180
Accès aux attributs181
Accès direct181
Getters et Setters181
Propriétés pour l'accès aux attributs182
Propriétés des valeurs calculées184
Masquage des noms pour la confidentialité184
Attributs de classe et d'objet185
Types de méthode186
Méthodes d'instance186
Méthodes de classe187
Méthodes statiques187
Typologie du canard188
Méthodes magiques190
Agrégation et composition193
Quand utiliser des objets ou autre chose194
Tuples nommés195
Classes de données196
Attrs197
À venir198
À faire198
11. Modules, packages et bonus
199
Modules et déclaration d'import199
Importer un module199
Importer un module avec un autre nom201
Importer uniquement ce que vous voulez à partir d'un module202
Packages202
Le chemin de recherche de modules204
Imports relatifs et absolus205
Packages d'espaces de noms205
Modules contre Objets206
Bonus de la bibliothèque standard Python207
Gérer les clés manquantes avec setdefault() et defaultdict()207
Compter les éléments avec Counter()209
Trier par clé avec OrderedDict()211
Pile + file == deque211
Itérer sur les structures de code avec itertools212
Afficher joliment avec pprint()213
Tirages aléatoires214
Plus de puissance : obtenir d'autres ressources Python215
À venir215
À faire216
Part 2. Python dans la pratique
12. Manipuler et modifier les données
219
Chaînes de texte : Unicode220
Chaînes Unicode Python 3221
UTF-8223
Encodage224
Décodage226
Entités HTML227
Normalisation228
Pour plus d'informations229
Chaînes de texte : expressions régulières230
Rechercher une correspondance de début exacte avec match()231
Rechercher la première correspondance avec search()232
Rechercher toutes les correspondances avec findall()232
Scinder aux correspondances avec split()233
Remplacer les correspondances avec sub()233
Motifs : caractères spéciaux233
Motifs : utilisation des spécificateurs235
Motifs : spécification de la sortie de match()238
Données binaires238
bytes et bytearray238
Convertir des données binaires avec struct240
Autres outils de données binaires243
Conversions octets/chaînes avec binascii()244
Opérateurs de bits244
Une analogie avec la bijouterie245
À venir245
À faire245
13. Calendriers et horloges
247
Année bissextile248
Le module datetime249
Utilisation du module time251
Lire et écrire les dates et heures253
Toutes les conversions257
Modules alternatifs257
À venir258
À faire258
14. Fichiers et répertoires
259
Entrée et sortie de fichier259
Créer ou ouvrir avec open()259
Écrire un fichier texte avec print()260
Écrire un fichier texte avec write()261
Lire un fichier texte avec read(), readline() ou readlines()262
Écrire un fichier binaire avec write()264
Lire un fichier binaire avec read()265
Fermer les fichiers automatiquement en utilisant with265
Changer de position avec seek()265
Installation en mémoire267
Opérations sur les fichiers267
Vérifier l'existence avec exists()268
Vérifier le type avec isfile()268
Copier avec copy()269
Changer le nom avec rename()269
Lien avec link() ou symlink()269
Changer les permissions avec chmod()270
Changer le propriétaire avec chown()270
Supprimer un fichier avec remove()270
Opérations de répertoires270
Créer avec mkdir()270
Supprimer avec rmdir()271
Répertorier le contenu avec listdir()271
Changer le répertoire courant avec chdir()272
Liste de fichiers correspondant à un motif avec glob()272
Noms de chemin272
Obtenir un chemin complet avec abspath()273
Obtenir le chemin d'un lien symbolique avec realpath()273
Construire un chemin avec os.path.join()274
Utiliser pathlib274
BytesIO et StringIO275
À venir276
À faire276
15. Données temporelles : processus et concurrence
277
Programmes et processus277
Créer un processus avec sous-processus278
Créer un processus avec multiprocessing279
Tuer un processus avec terminate()280
Obtenir des informations système avec os281
Obtenir des informations sur le processus avec psutil282
Automatisation des commandes282
Invoke282
Autres assistants de commandes283
Concurrence284
Files d'attente285
Processus286
Threads287
concurrents.futures289
Green Threads et gevent293
twisted295
asyncio297
Redis297
Au-delà des files d'attente300
À venir301
À faire301
16. Données en boîte : le stockage permanent
303
Fichiers texte plats303
Fichiers texte calibrés303
Fichiers texte tabulés304
CSV304
XML306
Un avis de sécurité XML308
HTML309
JSON309
YAML312
Tablib314
Pandas314
Fichiers de configuration316
Fichiers binaires317
Fichiers binaires calibrés et mappage de la mémoire317
Feuilles de calcul317
HDF5317
TileDB318
Bases de données relationnelles318
SQL319
DB-API320
SQLite321
MySQL323
PostgreSQL323
SQLAlchemy324
Autres packages d'accès aux bases de données330
Stockage de données NoSQL330
La famille dbm330
Memcached331
Redis332
Bases de données de documents339
Bases de données temporelles340
Bases de données de graphes340
Autres NoSQL341
Bases de données en texte intégral341
À venir342
À faire342
17. Données spatiales : les réseaux
343
TCP/IP343
Sockets345
Scapy349
Netcat349
Modèles de mise en réseau350
Le modèle de requête-réponse350
ZeroMQ350
Autres outils de messagerie355
Le modèle de publication-abonnement355
Redis355
ZeroMQ357
Autres outils Pub-Sub358
Services Internet359
Système de noms de domaines359
Modules e-mail de Python360
Autres protocoles360
Services Web et API360
Sérialisation des données361
Sérialiser avec pickle361
Autres formats de sérialisation362
Appels de procédure distants (RPC)363
XML RPC364
JSON RPC365
RPC avec MessagePack366
Zerorpc367
gRPC368
Twirp369
Outils de gestion à distance369
Big Data massif369
Hadoop370
Spark370
Disco370
Dask370
Clouds371
Services Web Amazon372
Google Cloud372
Microsoft Azure372
OpenStack373
Docker373
Kubernetes373
À venir373
À faire373
18. Le Web démêlé
375
Clients Web376
Tester avec telnet377
Tester avec curl378
Tester avec httpie379
Tester avec httpbin380
Bibliothèques Web standard de Python380
Au-delà de la bibliothèque standard : le module requests382
Serveurs Web384
Le serveur Web Python le plus simple384
Interface de passerelle de serveur Web (WSGI)385
ASGI386
Apache386
NGINX388
Autres serveurs Web Python388
Frameworks de serveurs Web388
Bottle389
Flask392
Django397
Autres Frameworks397
Frameworks de base de données398
Services Web et automatisation398
webbrowser398
webview399
API Web et REST400
Explorer et fouiller401
Scrapy402
BeautifulSoup402
Requests-HTML403
Regardons un film403
À venir406
À faire407
19. Devenir Pythoniste
409
À propos de la programmation409
Trouver du code Python410
Installer des packages410
Utiliser pip411
Utiliser virtualenv412
Utiliser pipenv412
Utiliser un gestionnaire de packages413
Installer à partir des sources413
Environnements de développement intégrés413
IDLE413
PyCharm413
IPython414
Notebook Jupyter416
JupyterLab416
Nom et document416
Ajouter des suggestions de type418
Tester418
Vérifier avec pylint, pyflakes, flake8 ou pep8419
Tester avec unittest421
Tester avec doctest425
Tester avec nose426
Autres frameworks de test428
Intégration continue428
Déboguer le code Python428
Utiliser print()429
Utiliser des décorateurs429
Utiliser pdb430
Utiliser breakpoint()436
Écrire les messages d'erreur dans un journal437
Optimiser439
Mesurer les temps439
Algorithmes et structures de données443
Cython, NumPy et Extensions C444
PyPy444
Numba445
Contrôle de source446
Mercurial446
Git446
Distribuez vos programmes449
Cloner ce livre449
Pour en savoir plus450
Livres450
Sites Internet450
Groupes451
Conférences451
Obtenir un travail en Python451
À venir452
À faire452
20. Illustrations avec Python
453
Graphiques 2D453
Bibliothèque standard453
PIL et Pillow454
ImageMagick457
Graphiques 3D458
Animation 3D458
Interfaces utilisateur graphiques459
Tracés, graphiques et visualisation461
Matplotlib461
Seaborn464
Bokeh465
Jeux465
Audio et musique466
À venir466
À faire466
21. Python au travail
467
La suite Microsoft Office468
Effectuer des tâches commerciales468
Traitement des données en entreprise469
Extraction, transformation et chargement469
La validation des données473
Sources d'informations supplémentaires473
Packages d'affaires open source en Python474
Python en finance474
Sécurité des données d'entreprise474
Cartes475
Formats475
Dessiner une carte à partir d'un fichier de forme476
Géopandas479
Autres packages de cartographie480
Applications et données482
À venir483
À faire483
22. Python pour les sciences
485
Maths et statistiques dans la bibliothèque standard485
Fonctions mathématiques485
Travailler avec des nombres complexes487
Calculer un flottant précis avec décimal488
Effectuer des calculs rationnels avec fractions489
Utiliser des séquences compactées avec array489
Gérer des statistiques simples avec statistics489
Produit matriciel490
Python scientifique490
NumPy490
Créer un tableau avec array()491
Créer un tableau avec arange()492
Créer un array avec zeros(), ones(), or random()492
Modifier la forme d'un tableau avec reshape()493
Obtenir un élément avec []494
Arithmétique sur les arrays495
Algèbre linéaire496
SciPy497
SciKit497
Pandas498
Python et les domaines scientifiques498
À venir500
À faire500
A. Matériel et logiciel pour les débutants
501
B. Installer Python 3
511
C. Quelque chose de complètement différent : Async
521
D. Solutions des exercices
527
E. Antisèches
575
Index
581