返回介绍

关闭文件和服务器连接

发布于 2024-01-29 22:24:14 字数 797 浏览 0 评论 0 收藏 0

我们在第33章遇到了这一类的例子。作为概括,异常处理工具通常也用来确保系统资源终结,不管在处理过程中是否发生了错误。

例如,一些服务器需要关闭连接,从而终止一个会话。与之类似,输出文件可能需要关闭把缓冲区写入磁盘的调用,并且,如果没有关闭输入文件的话,它可能会占用文件描述符;尽管在垃圾收集的时候,如果文件对象还打开它会自动关闭,但这有时候很难确保。

确保一个特殊代码块的终止操作的更通用和显式的方式是try/finally语句:

正如我们在第33章所见到的,Python 2.6和Python 3.0中的一些对象使得这较为容易:提供由with/as语句运行的环境管理器,从而为我们自动终止或关闭对象:

那么,哪种选择更好呢?通常,这取决于你的程序。与try/finally相比,环境管理器更为隐式,它与Python通常的设计哲学背道而驰。环境管理器肯定也不太常见,它们通常只对选定的对象可用,并且编写用户定义的环境管理器来处理通用的终止需求,比编写一个try/finally更为复杂。

另一方面,使用已有的环境管理器,比使用try/finally需要更少的代码,如前面的例子所示。此外,环境管理器协议除了支持退出动作,还支持进入动作。尽管try/finally可能是更加广为应用的技术,环境管理器可能更适合于可以使用它们的地方,或者可以允许它们的额外复杂性的地方。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文