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写的,所以可以直接查看其模块和函数的源代码。有疑问时只需打开代码自己一探究竟。尽管文档中已经包含了你想知道的一切,但总还是有机会让你学一些有用的东西。
- 内容提要
- 中文版序
- 前言
- 第1章 项目开始
- 1.1 Python版本
- 1.2 项目布局
- 1.3 版本编号
- 1.4 编码风格与自动检查
- 1.5 Joshua Harlow访谈
- 第2章 模块和库
- 2.1 导入系统
- 2.2 标准库
- 2.3 外部库
- 2.4 框架
- 2.5 Doug Hellmann访谈
- 第3章 管理API变化
- Christophe de Vienne访谈
- 第4章 时区陷阱
- 第5章 文档
- 5.1 Sphinx和reST入门
- 5.2 Sphinx模块
- 5.3 扩展Sphinx
- 第6章 分发
- 6.1 简史
- 6.2 使用pbr打包
- 6.3 Wheel格式
- 6.4 包的安装
- 6.5 和世界分享你的成果
- 6.6 Nick Coghlan访谈
- 6.7 入口点
- 6.7.1 可视化的入口点
- 6.7.2 使用控制台脚本
- 6.7.3 使用插件和驱动程序
- 第7章 虚拟环境
- 第8章 单元测试
- 8.1 基础知识
- 8.2 fixture
- 8.3 模拟(mocking)
- 8.4 场景测试
- 8.5 测试序列与并行
- 8.6 测试覆盖
- 8.7 使用虚拟环境和tox
- 8.8 测试策略
- 8.9 Robert Collins访谈
- 第9章 方法和装饰器
- 9.1 创建装饰器
- 9.2 Python中方法的运行机制
- 9.3 静态方法
- 9.4 类方法
- 9.5 抽象方法
- 9.6 混合使用静态方法、类方法和抽象方法
- 9.7 关于super的真相
- 第10章 函数式编程
- 10.1 生成器
- 10.2 列表推导
- 10.3 函数式函数的函数化
- 第11章 抽象语法树
- 11.1 用抽象语法树检查来扩展flake8
- 11.2 Hy
- 11.3 Paul Tagliamonte访谈
- 第12章 性能与优化
- 12.1 数据结构
- 12.2 性能分析
- 12.3 有序列表和二分查找
- 12.4 namedtuple和slots
- 12.5 memoization
- 12.6 PyPy
- 12.7 通过缓冲区协议实现零复制
- 12.8 Victor Stinner访谈
- 第13章 扩展与架构
- 13.1 多线程的注意事项
- 13.2 多进程与多线程
- 13.3 异步和事件驱动架构
- 13.4 面向服务架构
- 第14章 RDBMS和ORM
- 14.1 用Flask和PostgreSQL流化数据
- 14.2 Dimitri Fontaine访谈
- 第15章 Python 3支持策略
- 15.1 语言和标准库
- 15.2 外部库
- 15.3 使用six
- 第16章 少即是多
- 16.1 单分发器
- 16.2 上下文管理器
- 第17章 延伸阅读
- 版权信息
- 版权声明
- 欢迎来到异步社区!
- 异步社区的来历
- 社区里都有什么?
- 购买图书
- 下载资源
- 与作译者互动
- 灵活优惠的购书
- 纸电图书组合购买
- 社区里还可以做什么?
- 提交勘误
- 写作
- 会议活动早知道
- 加入异步