第5章 可调用对象和上下文的使用

    我们可以使用collections.abc.Callable抽象基类和记忆化技术来创建类似函数的对象,但它们的运行速度会快一些,因为它们可以记忆上一次的处理结果。在一些情形下,为了优化算法的性能,记忆功能是基本的。

    上下文使得资源的管理更优雅可靠。with语句定义了上下文并创建了一个上下文管理器来控制上下文中的资源使用。Python的文件通常都包含了上下文管理器;每当使用with语句时,它们就会被适当地关闭。我们会看到一些使用contextlib模块中的工具来创建上下文管理器的方式。

    在Python 3.2中,抽象基类定义在collections模块中。

    在Python 3.3中,抽象基类定义在有一个单独的、命名为collections.abd的子模块中。在本章中,我们会专注Python 3.3版本。基本定义和Python 3.2是相同的,但import语句可能会改变。

    我们会看到一系列关于可调用对象的设计,并会演示为什么有状态的可调用对象在一些情形下比一个简单的函数更有用。在编写自己的上下文管理器之前,我们也会看一下如何使用Python中一些内置的上下文管理器。