返回介绍

15.5 本章小结

发布于 2024-02-05 21:59:47 字数 763 浏览 0 评论 0 收藏 0

本章从简单的话题入手,先讨论了 for、while 和 try 语句的 else 子句。当你习惯 else 子句在这些语句中的奇怪意思之后,我相信 else 能阐明你的意图。

然后,本章讨论了上下文管理器和 with 语句的作用。很快我们就知道,除了自动关闭打开的文件之外,with 语句还有很多用途。我们自己动手实现了一个上下文管理器——含有 __enter__/__exit__ 方法的 LookingGlass 类,说明了如何在 __exit__ 方法中处理异常。 Raymond Hettinger 在 PyCon US 2013 上所做的主题演讲传达了一个重要的观点:with 不仅能管理资源,还能用于去掉常规的设置和清理代码,或者在另一个过程前后执行的操作(“What Makes Python Awesome?”,第 21 张幻灯片)。

最后,我们分析了标准库中 contextlib 模块里的函数。其中,@contextmanager 装饰器能把包含一个 yield 语句的简单生成器变成上下文管理器——这比定义一个至少包含两个方法的类要更简洁。我们使用 looking_glass 生成器函数实现了 LookingGlass 类,还讨论了使用 @contextmanager 时如何处理异常。

@contextmanager 装饰器优雅且实用,把三个不同的 Python 特性结合到了一起:函数装饰器、生成器和 with 语句。

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

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

发布评论

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