我在巴黎大学教授研究生级别的 Python 课程,需要向学生介绍标准库。我想和他们讨论一些最重要的标准模块。
您认为哪些模块是绝对必须的?尽管响应可能因您的领域(网络编程、科学等)而异,但我觉得一些模块通常是需要的:、、、、、、、…… math
,sys
也许:、、、…… re
< /p>
os
os.path
logging
collections
struct
您建议我在 1 或 2 小时的时间段内展示哪些模块?
我在巴黎大学教授研究生级别的 Python 课程,需要向学生介绍标准库。我想和他们讨论一些最重要的标准模块。
您认为哪些模块是绝对必须的?尽管响应可能因您的领域(网络编程、科学等)而异,但我觉得一些模块通常是需要的:、、、、、、、…… math
,sys
也许:、、、…… re
< /p>
os
os.path
logging
collections
struct
您建议我在 1 或 2 小时的时间段内展示哪些模块?
在 1-2 小时的时段内涵盖的模块完全取决于您的听众的兴趣或重点。他们还上什么课?他们准备立即使用什么?
一定要提到math
和decimal
和datetime
和。time
re
对于将从事面向文件工作的 IT 类型:glob
、fnmatch
、os
、os.path
、tempfile
和shutil
.
数据库人员必须听说过sqlite
和json
.
模拟观众可能想听听random
。
Web 开发人员必须urllib2
从客户的角度来了解。还有 Beautiful Soup 和您选择的 XML 解析器。
Web 开发人员必须从服务器的角度来了解logging
和了解。wsgiref
我会提供itertools
和functools
。这些模块对编程中随处可见的抽象进行操作,因此我认为它们对学习很有用。在更实际的事情中,xml 模块 ( xml.dom
, xml.sax
) 可能非常有用。
看看PyMOTW(本周 Python 模块)。虽然它不是严格的标准库,但它是 python 标准库的明显和不那么明显的宝石的一个很好的资源。更重要的是,它还可以作为引入模块的优秀文档。
我会选择一些对执行典型计算机任务的典型计算机用户/程序员最有意义的模块。这样,他们最有可能在自己的时间实际使用python。
在我看来,大多数人可能会执行的操作是文件操作,例如遍历目录中的每个文件并对其执行一些操作。
因此,我会说模块:os 和 os.path可能是最重要的,还提到了glob、fnmatch 和 shutil。此外,子流程也可能非常有用,因为它倾向于在上述上下文中使用。
最后,我会选择optparse,因为这将使他们能够非常快速地制作可用的、对程序员友好的程序,这也有望鼓励他们实际编写其他人想要使用的程序。
这在一定程度上取决于他们将要做什么以及他们的水平。我希望有人在我开始时向我指出的一些模块是:
我只记得一个很实用的模块:copy。
我经常使用其中的 deepcopy()。
我会将 urllib2 添加到列表中。
在短短一两个小时的时间里,我将介绍easy_install和PyPI 存储库:即使它们不在标准库中,它们也使您能够安装许多其他外部模块,并且它是您可以查看的第一个地方在标准库中找不到。
除此之外,我会介绍 numpy、re、doctest/unittest,也许还有 pickle。
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 模块特别有用。但我肯定会建议学生自己查看标准库模块列表。另外,从标准库之外的模块中,我会提到 numpy(或 numarray)和 pyparsing。
对于理科学生来说,一个鲜为人知但功能强大的模块“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 ~]$