Python with关键字详解:上下文管理器与异常处理的最佳实践

目录

Python with关键字详解:上下文管理器与异常处理的最佳实践

在Python中,with是一个用于处理上下文管理器的关键字。上下文管理器是一个定义进入和离开上下文时应执行的操作的对象。 with语句使代码更加清晰易读,并且简化了文件流等公共资源的管理。

1.有关键字

Python中的with语句用于异常处理,封装了try... except...finally编码范式,提高易用性。

新手教程的例子很形象:

Python 与关键字 |新手教程(runoob.com)

2.上下文管理器

这部分参考:【Python】withkeyword_python和keyword_InceptionZ的博客详解-CSDN博客

以文件操作为例,打开文件相当于上面,操作文件相当于下面,关闭文件相当于下面。

上下文管理器:上下文管理器的本质是一个可以支持with操作的类或对象。任何一对实现 __enter__() 和 __exit__() 方法的类对象都可以称为上下文管理器。上下文管理器对象可以使用with关键字来管理上下文。显然,文件(文件对象)也实现了上下文管理协议(上面的两个方法)

自定义上下文管理器:

class MyFile():
	# 1. __init__()  初始化方法
	def __init__(self,file_name,file_mode):
		self.file_name = file_name
		self.file_mode = file_mode
		
	# 2. __enter__() 上文方法
	def __enter__(self):
		print("进入上文")
		self.file = open(self.file_name,self.file_mode)
		return self.file
	
	# 3. __exit__() 下文方法
	def __exit__():
		print("进入下文")
		self.file.close()
# hello.txt为自己定义的文件
# file 并不是MyFile的一个对象,而是上文__enter__函数返回的内容,是一种资源
with MyFile('hello.txt','r') as file:
	file_data = file.read()
	print(file_data)
# result
进入上文
这里是你文件里的内容
进入下文
			

三、总结

with语句的实现原理是基于上下文管理器的。上下文管理器是一个实现 __enter__ 和 __exit__ 方法的类。使用 with 语句确保在嵌套块的末尾调用 __exit__ 方法。这个概念类似于 try...finally 块的使用。

总结一下with的工作原理:

(1)紧跟在with后面的语句被求值后,调用返回对象的“-enter-()”方法,该方法的返回值将赋给as后面的变量;

(2) 执行完with后面的所有代码块后,会调用之前返回的对象的“-exit-()”方法。

如果你觉得上面的总结比较抽象,可以通过看下面的例子来理解:

4.与torch.no_grad()一起使用

只需按以下顺序阅读:

(1条留言)【pytorch系列】with torch.no_grad():使用详解_大黑山禅师博客-CSDN博客

(6条消息) 什么时候应该与torch.no_grad()一起使用?什么时候应该使用.requires_grad ==False?_no_grad grad_zero_Y。张F的博客-CSDN博客 最后看一下这个:

pytorch autograd后向函数中retain_graph参数的作用,简单例子分析,以及create_graph参数的作用 - yangyuwen_yang - 博客园(cnblogs.com)

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读