web-dev-qa-db-fra.com

Les plus utiles Python de la bibliothèque standard?

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?

56
Eric O Lebigot

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.

41
S.Lott

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.

32
Rorick

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.

18
Benjamin Wohlwend

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.

7
Edan Maor

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:

  • StringIO - pour les empêcher de le réimplémenter, ce qu'ils feront s'ils ne le découvrent pas.
  • journalisation - pour les mettre sur la bonne voie en ce qui concerne le débogage des impressions
  • cornichon - pour les empêcher d'essayer d'utiliser XML partout.
  • xml.etree.ElementTree - Pour les enregistrer du modèle DOM lorsqu'ils ont réellement besoin de travailler avec XML.
  • pprint - pour rendre les structures imbriquées dans python moins intimidantes.
6
Mattias Nilsson

Je me souviens juste d'un module très pratique: la copie.
J'utilise assez souvent le deepcopy ().

6
lukmac

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.

5
dalloliogm

J'ajouterais urllib2 à la liste.

5
Bernd

operator, à côté de ce qui a déjà été mentionné.

4
Filip Dupanović

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.

3
Vijayendra Bapte

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.

3
abbot

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.

2
asmeurer

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

1
lukmac

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 ~]$
1
Mike Pennington

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.

1
J S

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.

1
Mark Rushakoff