55

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

您认为哪些模块是绝对必须的?尽管响应可能因您的领域(网络编程、科学等)而异,但我觉得一些模块通常是需要的:、、、、、、、…… mathsys也许:、、、…… re< /p> osos.pathloggingcollectionsstruct

您建议我在 1 或 2 小时的时间段内展示哪些模块?

4

16 回答 16

41

在 1-2 小时的时段内涵盖的模块完全取决于您的听众的兴趣或重点。他们还上什么课?他们准备立即使用什么?

一定要提到mathdecimaldatetime和。timere

对于将从事面向文件工作的 IT 类型:globfnmatchosos.pathtempfileshutil.

数据库人员必须听说过sqlitejson.

模拟观众可能想听听random

Web 开发人员必须urllib2从客户的角度来了解。还有 Beautiful Soup 和您选择的 XML 解析器。

Web 开发人员必须从服务器的角度来了解logging和了解。wsgiref

于 2009-09-21T14:21:47.080 回答
33

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

于 2009-09-21T10:57:58.513 回答
18

看看PyMOTW(本周 Python 模块)。虽然它不是严格的标准库,但它是 python 标准库的明显和不那么明显的宝石的一个很好的资源。更重要的是,它还可以作为引入模块的优秀文档。

于 2009-09-21T11:00:38.280 回答
7

我会选择一些对执行典型计算机任务的典型计算机用户/程序员最有意义的模块。这样,他们最有可能在自己的时间实际使用python。

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

因此,我会说模块:os 和 os.path可能是最重要的,还提到了glob、fnmatch 和 shutil。此外,子流程也可能非常有用,因为它倾向于在上述上下文中使用。

最后,我会选择optparse,因为这将使他们能够非常快速地制作可用的、对程序员友好的程序,这也有望鼓励他们实际编写其他人想要使用的程序。

于 2009-09-21T19:42:58.173 回答
6

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

  • StringIO - 阻止他们重新实现它,如果他们没有发现它,他们会这样做。
  • 日志记录 - 在调试打印输出时将它们放在正确的路径上
  • pickle - 阻止他们尝试在任何地方使用 XML。
  • xml.etree.ElementTree - 当它们实际需要使用 XML 时,将它们从 DOM 模型中保存。
  • pprint - 使 python 中的嵌套结构不那么令人生畏。
于 2009-09-21T14:39:57.503 回答
6

我只记得一个很实用的模块:copy。
我经常使用其中的 deepcopy()。

于 2011-03-09T21:07:00.363 回答
5

我会将 urllib2 添加到列表中。

于 2009-09-21T11:30:12.853 回答
5

在短短一两个小时的时间里,我将介绍easy_installPyPI 存储库:即使它们不在标准库中,它们也使您能够安装许多其他外部模块,并且它是您可以查看的第一个地方在标准库中找不到。

除此之外,我会介绍 numpy、re、doctest/unittest,也许还有 pickle。

于 2009-09-21T13:02:44.407 回答
4

operator,在已经提到的旁边。

于 2009-09-21T13:55:19.873 回答
3

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

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

于 2009-09-21T13:45:27.880 回答
3

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

于 2009-09-21T20:19:37.907 回答
2

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

此外,它不是真正的模块,但我会提到__future__.

没有人应该不做就使用 Python import this

于 2010-06-16T22:57:58.490 回答
1

除了你提到的那些,我发现 subprocess 和 sqlite3 模块特别有用。但我肯定会建议学生自己查看标准库模块列表。另外,从标准库之外的模块中,我会提到 numpy(或 numarray)和 pyparsing。

于 2009-09-21T11:19:43.267 回答
1

我会在decimal模块上施加一些重量。如果他们是编程初学者,他们肯定不会意识到浮点精度的含义。如果使用货币或其他必须通过多次数学运算保持精确小数精度的单位,该decimal模块非常有价值。

当然,您可能也想触及 不需要那么准确的情况。

于 2009-09-21T11:23:32.957 回答
1

对于理科学生来说,一个鲜为人知但功能强大的模块“networkx”将很有价值。但他们需要先安装它。该模块有据可查: http: //networkx.lanl.gov/index.html

于 2011-03-08T23:31:53.233 回答
1

没有时间就很难

>>> # 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 ~]$
于 2011-05-02T10:43:55.320 回答