上下文管理器(Context managers)

    使用上下文管理器最广泛的案例就是语句了。
    想象下你有两个需要结对执行的相关操作,然后还要在它们中间放置一段代码。
    上下文管理器就是专门让你做这种事情的。举个例子:

    1. file = open('some_file', 'w')
    2. file.write('Hola!')
    3. file.close()

    当与第一个例子对比时,我们可以看到,通过使用,许多样板代码(boilerplate code)被消掉了。 这就是with语句的主要优势,它确保我们的文件会被关闭,而不用关注嵌套代码如何退出。

    让我们看看如何来实现我们自己的上下文管理器。这会让我们更完全地理解在这些场景背后都发生着什么。