Le petit Python
Aide-mémoire pour Python 3
Richard Gomez
Prologue5
1 Ouvrir IDLE Python et éditer un script23
2 Mots réservés et fonctions internes29
2.1 Mots réservés29
2.2 Fonctions internes29
2.3 Module builtins31
2.4 Méthodes internes32
2.5 Méthodes spéciales34
2.6 Type des fonctions et méthodes internes37
3 Données et types de données39
3.1 Types importants39
3.1.1 Données de type bool (booléens)39
3.1.2 Données de type int (entiers)39
3.1.3 Données de type float (nombres décimaux)40
3.1.4 Données de type complex (nombres complexes)40
3.1.5 Données de type str (chaînes de caractères)40
3.1.6 Données de type bytes (chaînes de bytes)40
3.1.7 Données de type bytearray (chaînes de bytes)41
3.1.8 Données de type list (listes)41
3.1.9 Données de type tuple (uplets)41
3.1.10 Données de type range (plages d'entiers)41
3.1.11 Données de type dict (dictionnaires)41
3.1.12 Données de type set (ensembles)42
3.1.13 Données de type frozenset (ensembles)42
3.1.14 Données de type generator (listes virtuelles)42
3.1.15 Données de type function (fonctions)42
3.1.16 Données de type builtin-function-or-me thod43
3.1.17 Données de type method-wrapper43
3.1.18 Données de type NoneType (type de None)43
3.1.19 Données de type Objet-fichier-texte44
3.1.20 Données de type Objet-fichier-binaire44
3.1.21 Données de type module (bibliothèques)45
3.1.22 Donnée de type type45
3.1.23 Autres types45
3.2 Tester le type d'une donnée45
3.3 Itérables, séquences, mutables, etc.46
3.4 Typage dynamique48
4 Affectations, identificateurs et aliasing51
4.1 Différentes manières d'affecter une donnée à une variable51
4.1.1 Manière classique51
4.1.2 Affectation avec décompression52
4.1.3 Affectations à la queue leu leu54
4.2 Affectation et opération simultanées54
4.3 Notion d'identificateur55
4.4 Identificateurs autorisés par Python59
4.5 Aliasing60
4.6 Fonction id62
4.7 Résolution d'un identificateur64
4.7.1 Variables locales, globales et internes64
4.7.2 Règles Local-Global-Interne65
4.7.3 Fonctions globals et locals66
4.7.4 Mot réservé global67
5 Modules et bibliothèques69
5.1 Importer un module69
5.2 Importer le contenu d'un module70
5.3 Des propres modules à soi71
5.4 Auto-test72
5.5 sys.modules et sys. builtin_mo dules_names74
5.6 La liste sys.path77
5.7 D'autres bibliothèques78
6 Afficher : print, str et repr81
6.1 Introduction81
6.2 Argument end81
6.3 Afficher plusieurs données et argument sep82
6.4 Argument file82
6.5 Fonction str versus fonction repr83
7 Calcul et arithmétique85
7.1 Types de nombres et méthodes85
7.1.1 Type complex85
7.1.2 Type float86
7.1.3 Type int87
7.2 Opérations élémentaires89
7.3 Type int versus type float90
7.4 Dysfonctionnement avec les float92
7.5 Module decimal94
7.6 Module fractions96
7.7 Fonctions internes pour le calcul97
7.7.1 Fonction valeur absolue : abs97
7.7.2 Fonction troncature : int97
7.7.3 Fonction arrondir : round98
7.7.4 Fonction division euclidienne : divmod98
7.7.5 Fonction float99
7.7.6 Fonction puissance : pow99
7.7.7 Fonction de sommation : sum99
7.7.8 Fonction d'évaluation : eval100
7.7.9 Fonction complex100
7.7.10 Fonctions min et max100
7.7.11 Fonction range101
7.8 Calcul en base 2, 8 ou 16101
7.8.1 Calcul en binaire101
7.8.1.1 Conjonction : et101
7.8.1.2 Disjonction : |102
7.8.1.3 Disjonction exclusive : (...)102
7.8.1.4 Négation : (...)103
7.8.1.5 Décalage à gauche : 103
7.8.1.6 Décalage à droite : (...)103
7.8.2 Calcul en octal104
7.8.3 Calcul en hexadécimal104
7.9 Objet NaN et et nombres infinis105
7.10 Modules math et cmath107
7.10.1 Exploration107
7.10.2 Description rapide de quelques fonctions108
7.10.2.1 Fonction atan2108
7.10.2.2 Fonction expm1108
7.10.2.3 Fonction hypoténuse : hypot108
7.10.2.4 Fonction logarithme en base quelconque108
7.10.2.5 Fonction logip109
7.10.2.6 Fonction lgamma109
7.10.2.7 Fonction erf et erfc109
7.10.2.8 Fonction frexp109
7.10.2.9 Fonction ldexp109
7.10.2.10 Fonctions isinf et isnan109
7.10.2.11 Fonction de comparaison avec tolérance110
7.10.3 Fonctions internes améliorées par math110
7.10.3.1 Fonction partie entière : floor110
7.10.3.2 Fonction d'arrondi à l'unité par excès : ceil110
7.10.3.3 Fonction troncature : trunc110
7.10.3.4 Fonction de décomposition : modf110
7.10.3.5 Fonction valeur absolue : fabs111
7.10.3.6 Fonction modulo (reste euclidien) : fmod111
7.10.3.7 Fonction de sommation : fsum111
7.10.4 Module cmath112
7.10.4.1 Fonction phase112
7.10.4.2 Fonction polar112
7.10.4.3 Fonction rect112
7.11 Module random113
7.11.1 Exploration113
7.11.2 Description de quelques fonctions113
7.11.2.1 Fonction choice113
7.11.2.2 Fonction sample114
7.11.2.3 Fonction shuffle114
7.11.2.4 Fonction randint114
7.11.2.5 Fonction randrange114
7.11.2.6 Fonction seed115
7.11.2.7 Fonction random115
7.11.2.8 Fonction uniform115
7.11.2.9 Fonction triangular115
7.11.2.10 Fonction expovariate115
7.11.2.11 Fonction gauss116
7.11.2.12 Fonction normalvariate116
8 Saisie au clavier : input117
9 Structure if-elif-else119
9.1 Structure if simple119
9.2 Structure if-else119
9.3 Instruction elif (else if)120
9.4 Syntaxe if compacte121
10 Boucles avec for123
10.1 Introduction123
10.2 Sauter avec continue124
10.3 Casser une boucle avec break124
10.4 Itérer avec enumerate et zip125
11 Boucles avec while127
11.1 Introduction127
11.2 Sauter avec continue128
11.3 Sortir avec breack128
12 Gestion des erreurs avec try-except-else131
12.1 Structure try-except131
12.2 Structure try-except-else133
12.3 Structure try-except-else-final ly134
12.4 La classe BaseException et ses sous-classes136
12.5 Traiter une erreur en particulier142
12.6 Lever une exception avec raise143
12.7 Tester une assertion avec assert144
12.8 Instruction with145
12.9 Désamorcer toutes les errreurs145
12.10 Exemple amusant146
13 Fonctions : type function147
13.1 Définir et appeler une fonction147
13.2 Fonction multivaleurs148
13.3 Type function148
13.4 Fonction versus procédure150
13.5 L'ordre des arguments151
13.6 N'importe quel type en argument152
13.7 Avantage du typage dynamique152
13.8 Documentation (docstring)153
13.9 Doctests et module doctest154
13.10 Variables locales et variables globales155
13.11 Une fonction dans une fonction157
13.12 Valeur d'un argument par défaut159
13.13 Effet de bord161
13.14 Décompresser un itérable avec *162
13.15 Décompresser un dict avec **165
13.16 Arguments avec nom obligatoire167
13.17 Règle à suivre pour les arguments (signature)168
13.18 Fonctions lambda169
14 Décorateurs de fonctions171
14.1 Introduction171
14.2 Opérateur (...)172
14.3 Exemple173
14.4 Un conseil pour les arguments de la décorée174
14.5 Préserver le docstring175
14.6 Décorateurs avec paramètres177
14.7 Exemples classiques178
14.7.1 Affichage du nom et des arguments : logging178
14.7.2 Cache d'une fonction : mémoïsation179
14.7.3 Chronomètre attaché à une fonction : benchmark181
14.7.4 Compteur attaché à une fonction181
15 Gestionnaires de contexte : with183
15.1 Introduction183
15.2 Faire passer un argument au gestionnaire186
15.3 Mots réservés with et as187
15.4 Question de style188
15.5 Context Decorator189
15.6 Une alternative avec contextlib191
15.7 try versus with192
16 Plages d'entiers : type range195
16.1 Introduction195
16.2 Convertir un range196
16.3 Le type range est itérable197
16.4 Indexing et slicing197
16.5 Fonction slice199
16.6 Initialiser des variables avec un range199
16.7 Exploration200
17 Booléens : type bool201
17.1 Type bool201
17.2 Opérateurs de comparaison201
17.3 Convertir une donnée en booléen203
17.4 Calcul numérique avec un booléen204
17.5 Opérations sur les booléens205
17.5.1 Négation205
17.5.2 Conjonction205
17.5.3 Disjonction205
17.5.4 Disjonction exclusive206
17.5.5 Règles de priorité206
17.6 Short-cut207
17.7 Exploration209
18 Chaînes de caractères : type str211
18.1 Délimiteurs211
18.2 Code d'échappement212
18.3 Fonction input215
18.4 Représentation d'une chaîne : repr216
18.5 Triple guillemets ou triple quotes217
18.6 Chaîne brute (raw string)218
18.7 Indices et slicing219
18.8 Parcourir une chaîne220
18.9 Opérateurs + et *221
18.10 Interpréter le contenu d'une chaîne221
18.10.1 Fonction int222
18.10.2 Fonction float222
18.10.3 Fonction complex222
18.10.4 Fonction eval222
18.11 Conversion avec list, tuple, set et frozenset223
18.12 Méthode format224
18.13 Standard Unicode224
18.14 Comparer des chaînes225
18.15 Exploration de str225
18.16 Description des méthodes de str226
18.16.1 Méthode count226
18.16.2 Méthode find226
18.16.3 Méthode rfind227
18.16.4 Méthode index227
18.16.5 Méthode rindex227
18.16.6 Méthode replace227
18.16.7 Méthode split228
18.16.8 Méthode rsplit228
18.16.9 Méthode splitlines228
18.16.10 Méthode partition229
18.16.11 Méthode rpartition229
18.16.12 Méthode join229
18.16.13 Méthode upper229
18.16.14 Méthode isupper230
18.16.15 Méthode lower230
18.16.16 Méthode islower230
18.16.17 Méthode casefold230
18.16.18 Méthode title230
18.16.19 Méthode istitle231
18.16.20 Méthode capitalize231
18.16.21 Méthode swapcase231
18.16.22 Méthode isalnum231
18.16.23 Méthode isalpha231
18.16.24 Méthode isdigit231
18.16.25 Méthode isdecimal232
18.16.26 Méthode isnumeric232
18.16.27 Méthode isspace232
18.16.28 Méthode startswith232
18.16.29 Méthode endswith232
18.16.30 Méthode strip232
18.16.31 Méthode Istrip233
18.16.32 Méthode rstrip233
18.16.33 Méthode expandtabs233
18.16.34 Méthode center233
18.16.35 Méthode ljust234
18.16.36 Méthode rjust234
18.16.37 Méthode zfill234
18.16.38 Méthode format234
18.16.39 Méthode encode235
18.16.40 Méthode isidentifier235
18.16.41 Méthode isprintable235
18.16.42 Méthode format_map235
18.16.43 Méthode maketrans236
18.16.44 Méthode translate236
19 Formater les chaînes avec format239
19.1 Introduction239
19.2 Syntaxe d'une balise239
19.3 Coder une référence240
19.3.1 Code nom240
19.3.2 Code attribut, clé ou indice241
19.4 Coder une conversion243
19.5 Coder un formatage243
19.5.1 Codes fill, align et width243
19.5.2 Code sign244
19.5.3 Code précision244
19.5.4 Code type245
19.5.5 Code dièse #248
19.5.6 Code séparateur anglosaxon ,248
19.5.7 Code 0248
19.6 Cas particulier des dates249
19.7 Application : affichage d'un tableau249
19.8 Échappement249
19.9 Plus compliqué250
19.10 Fonction format250
19.11 Ancien formatage251
20 Listes : type list253
20.1 Introduction253
20.2 Le type list est itérable253
20.3 Concaténation et multiplication254
20.4 Convertir avec la fonction list255
20.5 Indexing et slicing255
20.6 Remplacer une tranche par une autre257
20.7 Aliasing259
20.8 Simuler une matrice260
20.8.1 Adapter les indices260
20.8.2 Initialisation260
20.9 Compréhension262
20.10 Fusionner et aplatir263
20.11 Trier avec sort ou sorted (arguments reverse, key)264
20.12 Exploration266
20.13 Fonctions, instructions et méthodes266
20.13.1 Instruction del267
20.13.2 Méthode sort267
20.13.3 Fonction sorted268
20.13.4 Méthode reverse268
20.13.5 Fonction reversed268
20.13.6 Méthode index268
20.13.7 Méthode count269
20.13.8 Méthode remove269
20.13.9 Méthode append269
20.13.10 Méthode insert270
20.13.11 Méthode extend270
20.13.12 Méthode pop270
20.13.13 Fonction max271
20.13.14 Fonction min271
20.13.15 Méthode copy271
20.13.16 Méthode clear271
21 Uplets : type tuple273
21.1 Introduction273
21.2 Le type tuple est itérable274
21.3 Fonction tuple275
21.4 Slicing276
21.5 Pas de mutation277
21.6 Cancaténation et multiplication277
21.7 Exploration278
21.8 Intérêt du tuple278
21.9 Pas de compréhension279
21.10 Uplets à champs nommés : types namedtuple279
22 Générateurs : types generator281
22.1 Introduction281
22.2 Fonction next282
22.3 Caractéristiques282
22.4 Fonction reversed283
22.5 Fonction iter284
22.6 Fonction iter avec sentinelle285
22.7 Instruction yield286
22.8 Fonction enumerate288
22.9 Fonction zip289
22.10 Fonction map, filter et reduce290
22.10.1 Fonction filter291
22.10.2 Fonction map291
22.10.3 Ancienne fonction reduce292
22.11 Module itertools293
22.11.1 Fonction itertools.chain293
22.11.2 Fonction intertools.islice294
22.12 Terminologie officielle294
23 Ensembles : types set et frozenset297
23.1 Introduction297
23.2 Les typesset et frozenset sont itérables298
23.3 Fonctions set et frozenset298
23.4 Type set et aliasing299
23.5 Compréhension300
23.6 Opérations sur les ensembles300
23.7 Méthodes spécifiques à set302
23.7.1 Méthode add302
23.7.2 Méthode remove302
23.7.3 Méthode discard302
23.7.4 Méthode update303
23.7.5 Méthode intersection_update303
23.7.6 Méthode difference_update303
23.7.7 Méthode symetric_difference_update304
23.7.8 Méthode pop304
23.7.9 Méthode clear304
23.8 Explorons le type set305
23.9 Explorons le type frozenset305
24 Dictionnaires : type dict307
24.1 Introduction307
24.2 Notion de dictionnaire307
24.3 Clés autorisées (données hashables)308
24.4 Définir un dictionnaire d'un seul coup309
24.5 Convertir avec dict310
24.6 Compréhension310
24.7 Modifier un item311
24.8 Méthodes keys, values et items311
24.9 Itérer un dictionnaire312
24.10 Phénomène d'aliasing313
24.11 Méthode get314
24.12 Attributs de dict315
24.13 9 Instructions, méthodes et fonctions315
24.13.1 Méthode clear315
24.13.2 Instruction del316
24.13.3 Méthode fromkeys316
24.13.4 Fonction len316
24.13.5 Méthode pop317
24.13.6 Méthode popitem317
24.13.7 Méthode setdefault317
24.13.8 Méthode update318
24.14 Programmer avec un dictionnaire318
25 Chaînes d'octets : types bytes et bytearray321
25.1 Introduction321
25.2 Code ASCII standard323
25.3 Représentation des octets de 32 à 126325
25.4 Écrire des bytes avec des caractères ASCII standard326
25.5 Indexation, slicing et itération327
25.6 Convertir une donnée en bytes328
25.7 Type idéal pour ouvrir un fichier quelconque329
25.8 Type bytearray331
25.9 Exploration332
25.10 Quelques méthodes334
25.10.1 Méthode decode334
25.10.2 Méthode fromhex335
26 Modules os et os. path337
26.1 Vocabulaire337
26.2 Avertissement337
26.3 Répertoire courant et utilisateur338
26.4 Lister le contenu d'un répertoire338
26.5 Distinguer entre fichiers et répertoires340
26.6 Traitement des noms de fichiers341
26.7 Variables d'environnement342
26.8 Bilan343
27 Lire et écrire des fichiers345
27.1 Changer le répertoire courant345
27.2 Types fichier-texte et fichier-binaire345
27.3 Créer un fichier-texte et écrire à l'intérieur346
27.4 Écrire dans un fichier-texte déjà existant347
27.5 Lecture du contenu d'un fichier-texte348
27.6 Lecture d'un fichier-texte caractère par caractère348
27.7 Notion de ligne dans un texte349
27.8 Lecture d'un fichier-texte ligne par ligne350
27.9 Itérer un objet-fichier351
27.10 Intérêt de la commande break351
27.11 Un mot sur l'encodage352
27.12 Objet fichier-binaire352
27.13 Bilan sur les différents modes d'accès353
27.14 Module pickle353
27.15 Intérêt de try et with355
27.16 Quelques attributs356
27.16.1 Attribut mode356
27.16.2 Attribut name357
27.16.3 Attribut closed357
27.17 Exploration357
28 Encodage et décodage361
28.1 Encodage de texte361
28.2 Normes Latin-1 et utf-8362
28.3 Choisir l'encodage pour les fichiers textes364
28.4 Encodage des scripts écrits sous IDLE Python364
28.5 Module encodings365
29 Module turtle367
29.1 Introduction367
29.1 Fonctions de base pour dessiner368
29.2.1 Lever et baisser le stylo368
29.2.2 Avancer et reculer369
29.2.3 Pivoter369
29.2.4 Remplir une surface370
29.2.5 Tracer un polygone370
29.3 Angles370
29.3.1 Unité d'angle370
29.3.2 Angle de la tortue371
29.4 Déplacements en coordonnées absolues372
29.5 Couleurs373
29.5.1 Choisir le colormode373
29.5.2 Couleur du stylo373
29.5.3 Couleur de remplissage374
29.5.4 Fond d'écran375
29.6 Effacer, remettre à zéro375
29.7 Cercles et points376
29.8 Aspect377
29.8.1 Épaisseur du stylo377
29.8.2 Écrire du texte378
29.8.3 Titre et taille de la fenêtre Turtle Graphics378
29.8.4 Apparence de la tortue378
29.9 D'autres fonctions379
29.10 Exemples380
30 Introspection chez Python381
30.1 Fonction type381
30.2 Fonctions pour les attibuts383
30.2.1 Fonction hasattr383
30.2.2 Fonction deltattr384
30.2.3 Fonction setattr384
30.2.4 Fonction getattr385
30.3 Fonctions pour les classes386
30.3.1 Fonction isinstance386
30.3.2 Fonction issubclass387
30.4 Fonction dir387
30.5 Attribut --doc-- et fonction help388
30.6 Fonction callable389
30.7 Module builtins390
30.8 Attribut --name--393
30.9 Un petit code pour résumer394
Bibliographie397
Index399