标准库中最有用的Python模块?

我在巴黎大学教授研究生水平的Python课程,学生需要介绍标准库。 我想和他们讨论一些最重要的标准模块。

你认为哪些模块是绝对必须的? 即使响应可能取决于你的领域(networking编程,科学等),我觉得一些模块是常见的需要: mathsysreosos os.pathlogging ,…也许: collectionsstruct , …

你会build议我在一个或两个小时的时间内给出什么模块?

在1-2个小时内完成的模块完全取决于观众的兴趣或重点。 还有什么课程? 他们准备立即使用什么?

一定要提及mathdecimaldatetime timere

对于将要进行面向文件工作的ITtypes: globfnmatchosos.pathtempfileshutil

数据库人员必须听说关于sqlitejson

模拟观众可能想听到random

Web开发人员必须从客户的angular度来听取关于urllib2信息。 还有美丽的汤和您select的XMLparsing器。

Web开发人员必须从服务器angular度来听取有关loggingwsgiref信息。

我会提供itertoolsfunctools 。 这些模块对编程中随处可见的抽象进行操作,所以我认为它们对学习是有用的。 在更实际的事情中,xml模块( xml.domxml.sax )可能非常有用。

看看PyMOTW (本周的Python模块)。 虽然它不是严格的stdlib,但是它是python stdlib的一个明显而不是明显的宝贵资源。 更重要的是,它也是引入模块的优秀文档。

我会去找几个模块,这些模块对于执行典型计算机任务的典型计算机用户/程序员是最有意义的。 那样的话,他们有可能在自己的时间使用 python的机会最大。

在我看来,大多数人可能会执行的操作是文件操作,例如遍历目录中的每个文件并对其执行一些操作。

因此,我会说模块: os和os.path可能是最重要的,也提到glob,fnmatch和shutil 。 另外, subprocess也可能非常有用,因为它往往被用在上面提到的上下文中。

最后,我会selectoptparse ,因为这将使他们很快地制作可用的,程序员友好的程序,希望这也会鼓励他们真正编写其他人希望使用的程序。

这取决于他们将要做什么,他们是什么水平。 我希望有人在我开始时向我指出的一些模块是:

  • StringIO – 阻止它们重新实现它,如果它们没有发现它们,将会停止它们。
  • 日志logging – 在debugging打印输出时将它们放在正确的path上
  • 腌制 – 阻止他们试图在任何地方使用XML。
  • xml.etree.ElementTree – 在实际需要使用XML时将其从DOM模型中保存。
  • pprint – 使python中的嵌套结构不那么吓人。

我会将urllib2添加到列表中。

在只有两个小时的插槽中,我将介绍easy_install和PyPI存储库 :即使它们不在标准库中,它们也允许您安装许多其他外部模块,并且它是您可以查看的第一个地方在标准库中找不到。

除此之外,我会引入numpy,re,doctest / unittest,也许pickle。

我只记得一个非常实用的模块:复制。
我经常使用它的deepcopy()。

operator ,旁边已经提到。

不要忘记datetime,weakref,pickle,StringIO,heapq,可能是线程。

而且numpy也值得一提,虽然不是来自标准库。

os和os.path:因为这些是任何人都需要在python中编写平台独立代码所需的核心模块,学生可以在学习os和os.path之后从shell脚本切换到python脚本。

我认为这里的每个人都得到了所有重要的,除了sys 。 如果你看看实际的Python代码, sys可能是最常用的模块之一(通常是因为sys.version )。

另外,它不是一个真正的模块,但我会提到__future__

没有任何人应该使用Python而不进行import this

除了你提到的,我发现subprocess和sqlite3模块特别有用。 但是我当然会build议学生们看一下标准库模块本身的列表。 另外,从标准库之外的模块,我会提到numpy(或numarray)和pyparsing。

我会把一些重量放在decimal模块上。 如果他们是编程初学者,他们当然不会意识到浮点精度的影响。 如果使用通过多次math运算必须保留精确小数精度的货币或其他单位, decimal模块是非常有价值的。

当然,如果你不需要那么准确的话,你可能会想要触及一些情况。

对于理科学生来说,一个很less听到但function强大的模块“networkx”将是有价值的。 但他们需要先安装它。 这个模块有很好的文档: http : //networkx.lanl.gov/index.html

没有时间是很难活的

 >>> # 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 ~]$ 

一定要添加BeautifulSoup 。 最好的(如果不是最好的)HTMLparsing器之一。

编辑:

糟糕的是,这不是一个“标准”模块本身 ,但它应该是如果你做HTMLparsing。