尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
聊聊Python中的上下文管理器:with语句背后的秘密
用Python的人对with open()肯定不陌生。但你知道with语句背后是怎么工作的吗这篇文章用最短的篇幅讲清楚。上下文管理器是什么简单说上下文管理器就是实现了__enter__和__exit__两个方法的对象。pythonclass MyContext: def __enter__(self): print(进入上下文) return self def __exit__(self, exc_type, exc_val, exc_tb): print(退出上下文) return False # False表示不屏蔽异常 with MyContext() as ctx: print(执行代码) # 输出 # 进入上下文 # 执行代码 # 退出上下文为什么需要它最常见的场景是资源管理——文件、数据库连接、锁等用完后需要释放或关闭。python# 不用with手动管理 f open(file.txt, r) try: data f.read() finally: f.close() # 用with自动管理 with open(file.txt, r) as f: data f.read() # 文件自动关闭contextlib模块的便捷方式用contextmanager装饰器可以把一个函数变成上下文管理器pythonfrom contextlib import contextmanager contextmanager def timer(): import time start time.perf_counter() try: yield finally: elapsed time.perf_counter() - start print(f耗时: {elapsed:.3f}秒) with timer(): # 执行你想计时的代码 sum(range(1000000)) # 输出: 耗时: 0.023秒实际应用场景数据库事务pythoncontextmanager def transaction(conn): try: yield conn conn.commit() except Exception: conn.rollback() raise with transaction(db_conn) as conn: conn.execute(INSERT INTO users ...)临时切换目录pythoncontextmanager def chdir(path): import os old_cwd os.getcwd() os.chdir(path) try: yield finally: os.chdir(old_cwd) with chdir(/tmp): # 在/tmp目录下执行操作 os.listdir(.)小结上下文管理器的本质就是自动化的try/finally。它让资源管理变得优雅避免了忘记释放资源导致的泄露问题。如果你在写一个需要获取-使用-释放的组件考虑用上下文管理器封装一下会让调用者的代码干净很多。
RELATED

相关推荐

C++面向对象编程:从类与对象到封装与内存布局

C++面向对象编程:从类与对象到封装与内存布局

1. 从“过程”到“对象”:为什么我们需要类和对象?如果你是从C语言或者纯过程式编程转过来的,第一次接触“类”和“对象”这两个词,可能会觉得有点抽象,甚至觉得有点“多此一举”。毕竟,用结构体&#xff0…

📅 2026/11/7 9:57:12
Ubuntu主机间Samba文件共享配置指南

Ubuntu主机间Samba文件共享配置指南

1. 项目概述两台Ubuntu主机之间的文件共享是日常开发和运维中的常见需求。相比传统的FTP或SCP方式,Samba协议提供了更接近Windows文件共享的体验,支持权限管理、断点续传等实用功能。本文将详细介绍如何在两台Ubuntu 20.04 LTS主机间建立稳定的Samba共享…

📅 2026/10/6 11:18:35
AI与XR技术融合:核心架构与工业实践

AI与XR技术融合:核心架构与工业实践

1. AI与XR技术融合的核心价值 在XR(扩展现实)领域摸爬滚打多年,我亲眼见证了AI技术如何彻底改变了VR/AR开发的面貌。记得2016年做第一个VR项目时,手势识别需要手动标注上千张深度图,而现在只需几行代码调用预训练模型就…

📅 2026/10/9 3:50:49
MORE NEWS

更多资讯

📰

建筑电工证哪里的好网上查询怎么选靠谱机构

建筑电工证哪里的好网上查询怎么选靠谱机构 你急着上岗找工作,手里却连个建筑电工证都没有,这事儿搁谁身上都烦。现在不少工地、建筑项目都要求持证上岗,没有证连门都进不去。网上查一查,建筑电工证哪里的好?怎么报名?多少钱?这些都成了你必须搞清楚的…

📰

低压电工作业手写上岗必备,不考证真的找不到好工作

低压电工作业手写上岗必备,不考证真的找不到好工作 你是不是正为找不到工作发愁?现在不少工程类岗位, 低压电工作业手写 证书是 上岗必备…

📰

滑县有没有电工证考的?2026河南最新政策下电工证必须拿吗?

滑县有没有电工证考的?2026河南最新政策下电工证必须拿吗? 你是不是正在为找工作发愁?有没有遇到过这样的情况:明明技术过硬,但因为没有电工证,被HR直接pass?别急,2026年河南最新政策下,电工证不仅关乎你的工作机会,还影响着你的薪资…

📰

电工证补助在哪领取的多少钱?证书过期了不知道怎么复审延期

电工证补助在哪领取的多少钱?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,这事儿真的让人头疼。你是不是也遇到过这种情况?手头上的电工证眼看就要到期了,但你可能连复审的流程都不太清楚,更别提知道 多少钱…

📰

电工证补助在哪领取的怎么查?实操考试心里没底怕挂科怎么办?

电工证补助在哪领取的怎么查?实操考试心里没底怕挂科怎么办? 实操考试心里没底怕挂科?你不是一个人。很多人第一次接触电工证考试,尤其是低压电工证、高压电工证这些门槛较高的工种,担心自己操作不规范、流程不熟悉,结果挂科,白费时间和金钱。其实,只…

📰

哪里的低压电工证便宜还能全国通用

哪里的低压电工证便宜还能全国通用 实操考试心里没底怕挂科,这几乎是每一位想考低压电工证的学员心里最真实的声音。尤其是对于许昌的应届工程类毕业生来说,低压电工证不仅是一份工作入场券,更是关系到未来职业发展的关键。但面对【哪里的低压电工证便宜】…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬