目录
1.with关键字
2.上下文管理器
3.总结
4.with torch.no_grad()的用法
在Python中,with是一个关键字,用于处理上下文管理器(context manager)。上下文管理器是一种对象,它定义了在进入和离开某个上下文时应该执行的操作。with 语句使代码更清晰、更具可读性, 它简化了文件流等公共资源的管理。
1.with关键字
Python 中的 with 语句用于异常处理,封装了 try…except…finally 编码范式,提高了易用性。
菜鸟教程的例子就很生动:
Python with 关键字 | 菜鸟教程 (runoob.com)
2.上下文管理器
这部分内容参考:【Python】with关键字详解_python with关键字_InceptionZ的博客-CSDN博客
拿文件操作举例,打开文件就相当于上文,操作文件就相当于文中,关闭文件就相当于下文。
上下文管理器:上下文管理器本质就是能够支持with操作的类或对象。任何实现了__ enter __ ()和__ exit __()方法的类对象对可以称之为上下文管理器。上下文管理器对象可以使用with关键字对上下文管理,显然,文件(file对象)也实现了上下文管理协议(上面的两个方法)
自定义上下文管理器:
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
进入上文
这里是你文件里的内容
进入下文
3.总结
with 语句实现原理建立在上下文管理器之上。上下文管理器是一个实现 __enter__ 和 __exit__ 方法的类。使用 with 语句确保在嵌套块的末尾调用 __exit__ 方法。这个概念类似于 try...finally 块的使用。
总结with工作原理:
(1)紧跟with后面的语句被求值后,返回对象的“–enter–()”方法被调用,这个方法的返回值将被赋值给as后面的变量;
(2)当with后面的代码块全部被执行完之后,将调用前面返回对象的“–exit–()”方法。
如果觉得上面的总结抽象,再看如下实例就能理解了:
4.with torch.no_grad()的用法
按如下顺序阅读即可:
(1条消息) 【pytorch系列】 with torch.no_grad():用法详解_大黑山修道的博客-CSDN博客
(6条消息) 什么时候该用with torch.no_grad()?什么时候该用.requires_grad ==False?_no_grad grad_zero_Y. F. Zhang的博客-CSDN博客 最后在看一下这个:
pytorch autograd backward函数中 retain_graph参数的作用,简单例子分析,以及create_graph参数的作用 - yangyuwen_yang - 博客园 (cnblogs.com)
文章来源地址https://www.toymoban.com/news/detail-560534.html
文章来源:https://www.toymoban.com/news/detail-560534.html
到了这里,关于【python基础】python中的with关键字及其相关用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!