J'enseigne un cycle supérieur Python à l'Université de Paris, et les étudiants doivent être initiés à la bibliothèque standard. Je veux discuter avec eux de certains des modules standard les plus importants.
Selon vous, quels modules sont des incontournables? Même si les réponses varient probablement en fonction de votre domaine (programmation web, science, etc.), je pense que certains modules sont couramment nécessaires: math
, sys
, re
, os
, os.path
, logging
,… et peut-être: collections
, struct
,…
Quels modules proposeriez-vous que je présente, dans un créneau d'une ou deux heures?
Les modules à couvrir dans un intervalle de 1 à 2 heures dépendent entièrement de l'intérêt ou de la concentration de votre public. Quelles autres classes suivent-ils? Que sont-ils prêts à utiliser immédiatement?
N'oubliez pas de mentionner math
, decimal
et datetime
et time
et re
.
Pour les types informatiques qui effectueront un travail orienté fichier: glob
, fnmatch
, os
, os.path
, tempfile
et shutil
.
Les gens de la base de données doivent entendre parler de sqlite
et json
.
Le public de la simulation voudra peut-être entendre parler de random
.
Les développeurs Web doivent entendre parler de urllib2
du point de vue du client. Aussi Beautiful Soup et un analyseur XML de votre choix.
Les développeurs Web doivent entendre parler de logging
et wsgiref
d'un point de vue serveur.
Je proposerais itertools
et functools
. Ces modules fonctionnent sur des abstractions que l'on retrouve partout dans la programmation, donc je pense qu'ils sont utiles à étudier. Parmi les choses plus pratiques, les modules xml (xml.dom
, xml.sax
) peut être très utile.
Jetez un oeil à PyMOTW (Module Python de la semaine). Bien qu'il ne soit pas strictement stdlib, c'est une excellente ressource de gemmes évidentes et pas si évidentes de python stdlib. De plus, il sert également d'excellente documentation des modules introduits.
J'irais pour quelques modules qui ont le plus de sens pour un utilisateur/programmeur d'ordinateur typique effectuant des tâches informatiques typiques. De cette façon, il y a la plus grande chance qu'ils puissent réellement tiliser python sur leur propre temps).
À mon avis, les opérations que la plupart des gens effectueront probablement sont des opérations sur les fichiers, par exemple en parcourant chaque fichier d'un répertoire et en effectuant une action dessus.
Par conséquent, je dirais que les modules: os et os.path sont probablement les plus importants, et mentionnent également glob, fnmatch et shutil. En outre, sous-processus pourrait également être très utile, car il a tendance à être utilisé dans le contexte mentionné ci-dessus.
Enfin, j'irais avec optparse, car cela les amènera très rapidement à créer des programmes utilisables et conviviaux, ce qui les encouragera également à écrire des programmes que d'autres personnes souhaitent utiliser.
Cela dépend un peu de ce qu'ils feront et de leur niveau. Certains modules que j'aimerais que quelqu'un me fasse remarquer lorsque j'ai commencé sont:
Je me souviens juste d'un module très pratique: la copie.
J'utilise assez souvent le deepcopy ().
Dans seulement un créneau d'une à deux heures, je présenterais easy_install et le référentiel PyPI : même s'ils ne sont pas dans la bibliothèque standard, ils vous permettent d'installer de nombreux autres modules, et c'est le premier endroit où chercher lorsque vous ne pouvez pas trouver dans la bibliothèque standard.
En dehors de cela, je présenterais numpy, re, doctest/unittest et peut-être cornichon.
J'ajouterais urllib2 à la liste.
operator
, à côté de ce qui a déjà été mentionné.
os et os.path: car ce sont les modules de base dont tout le monde aura besoin pour écrire du code indépendant de la plate-forme en python et les étudiants peuvent passer du script Shell à python script après avoir appris os et os.path.
N'oubliez pas le datetime, le boldref, le pickle, le StringIO, le heapq, peuvent être en train de fileter.
Et numpy mérite également d'être mentionné, bien qu'il ne provienne pas de la bibliothèque standard.
Je pense que tout le monde ici a obtenu tous les éléments importants, à l'exception de sys
. Si vous regardez le véritable Python, sys
est probablement l'un des modules les plus couramment utilisés (généralement à cause de sys.version
).
De plus, ce n'est pas vraiment un module, mais je mentionnerais __future__
.
Et personne ne devrait utiliser Python sans faire import this
.
Pour les étudiants en sciences, un module "networkx" rarement entendu mais puissant sera précieux. Mais ils doivent d'abord l'installer. Ce module est bien documenté: http://networkx.lanl.gov/index.html
Il est difficile de vivre sans timeit
>>> # Python Shell usage
... import timeit
>>> tt = timeit.Timer("foo = 'time this'", "print 'setup with this arg'")
>>> tt.timeit(number=1000)
setup with this arg
0.00021100044250488281
>>>
[mpenning@Bucksnort ~]$ # Bash Shell usage
[mpenning@Bucksnort ~]$ # 5 runs with 1000 samples each.
[mpenning@Bucksnort ~]$ python -m timeit -n 1000 -r 5 -s "print 'setup w/ this arg'" \
"foo = 'time this'"
setup w/ this arg
setup w/ this arg
setup w/ this arg
setup w/ this arg
setup w/ this arg
1000 loops, best of 5: 0.173 usec per loop
[mpenning@Bucksnort ~]$
Mis à part ceux que vous avez mentionnés, j'ai trouvé les modules de sous-processus et sqlite3 particulièrement utiles. Mais je conseillerais certainement aux étudiants de jeter un œil à la liste des modules de bibliothèque standard eux-mêmes. De plus, à partir de modules en dehors de la bibliothèque standard, je mentionnerais numpy (ou numarray) et pyparsing.
Je placerais un peu de poids sur le module decimal
. S'ils sont débutants en programmation, ils ne seront certainement pas conscients des implications de précision en virgule flottante . Le module decimal
est extrêmement utile si vous travaillez avec des devises ou d'autres unités qui doivent conserver une précision décimale exacte à travers plusieurs opérations mathématiques.
Bien sûr, vous voudrez probablement aborder des situations où vous n'avez pas besoin d'être aussi précis.