Python本身内置的巨大标准库提供了丰富的工具和功能,可以满足你能想到的任何需求。很多Python的初学者习惯于自己写代码实现一些基本的功能,然后会惊奇地发现很多功能已经内置了,直接就可以使用。 任何时候想要自己写函数处理一些简单的工作时,请**停下来**先看看标准库。我的建议是至少大概浏览一遍标准库,这样下次再需要一个函数时就能知道是否可以利用标准库中已有的函数了。 后续章节会讨论其中的一些模块,如**functools**和**itertools**,下面是一些必须了解的标准库模块。 - **atexit**允许注册在程序退出时调用的函数。 - **argparse**提供解析命令行参数的函数。 - **bisect**为可排序列表提供二分查找算法(参见10.3节)。 - **calendar**提供一组与日期相关的函数。 - **codecs**提供编解码数据的函数。 - **collections**提供一组有用的数据结构。 - **copy**提供复制数据的函数。 - **csv**提供用于读写CSV文件的函数。 - **datetime**提供用于处理日期和时间的类。 - **fnmatch**提供用于匹配Unix风格文件名模式的函数。 - **concurrent**提供异步计算(在Python 3中内置,在Python 2中可通过PyPI安装)。 - **glob**提供用于匹配Unix风格路径模式的函数。 - **io**提供用于处理I/O流的函数。在Python 3中,它还包含**StringIO**(在Python 2中有同名的模块),可以像处理文件一样处理字符串。 - **json**提供用来读写JSON格式数据的函数。 - **logging**提供对Python内置的日志功能的访问。 - **multiprocessing**可以在应用程序中运行多个子进程,而且提供API让这些子进程看上去像线程一样。 - **operator**提供实现基本的Python运算符功能的函数,可以使用这些函数而不是自己写lambda表达式(参见8.3节)。 - **os**提供对基本的操作系统函数的访问。 - **random**提供生成伪随机数的函数。 - **re**提供正则表达式功能。 - **sched**提供一个无需多线程的事件调度器。 - **select**提供对函数*select()*和*poll()*的访问,用于创建事件循环。 - **shutil**提供对高级文件处理函数的访问。 - **signal**提供用于处理POSIX信号的函数。 - **tempfile**提供用于创建临时文件和目录的函数。 - **threading**提供对处理高级线程功能的访问。 - **urllib**(以及Python 2.x中的**urllib2**和**urlparse**)提供处理和解析URL的函数。 - **uuid**可以生成全局唯一标识符(Universally Unique Identifiers,UUID)。 这个模块清单可以作为一个快速参考,帮助你了解各个库模块的作用。如果能记住一部分就更好了。花在查找标准库上的时间越少,意味着编写实际代码的时间就越多。 > 提示 > 大多数标准库都是用Python写的,所以可以直接查看其模块和函数的源代码。有疑问时只需打开代码自己一探究竟。尽管文档中已经包含了你想知道的一切,但总还是有机会让你学一些有用的东西。