【python基础】python中的with关键字及其相关用法

这篇具有很好参考价值的文章主要介绍了【python基础】python中的with关键字及其相关用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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)

【python基础】python中的with关键字及其相关用法,python基础,python,开发语言

【python基础】python中的with关键字及其相关用法,python基础,python,开发语言 

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–()”方法。

 如果觉得上面的总结抽象,再看如下实例就能理解了:

【python基础】python中的with关键字及其相关用法,python基础,python,开发语言

 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

 

 

到了这里,关于【python基础】python中的with关键字及其相关用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python批量替换Excel和Word中的关键字

    有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉。因为这么多文件,要一个一个地打开文件,再进行批量替换修改,几个文件还好,如果是成百上千的文件,我想你一会儿就感觉自己被搞晕了,不仅搞不清

    2024年02月12日
    浏览(77)
  • 【Go 基础篇】Go语言中的defer关键字:延迟执行与资源管理

    在Go语言中, defer 是一种用于延迟执行函数调用的。它提供了一种简洁而强大的方式,用于在函数返回之前执行一些必要的清理操作或者释放资源。 defer 的灵活性和易用性使得它在Go语言中广泛应用于资源管理、错误处理和代码结构优化等方面。🚀🚀🚀 本篇博客将详

    2024年02月11日
    浏览(56)
  • chatgpt相关关键字

    听了一堂chatgpt的课程,真假参半,但积累了一些。不知道这些会在什么时候起到作用,先记录下来作为灵感积累 1 自然进化的过程,是人选择工具,也是工具选择人 2 Copliot-自动编程,感觉适用于独立新增模块 3 深蓝学院:openAI-chatgpt 4 图像修复算法:DALL-E-2 5

    2023年04月21日
    浏览(39)
  • 常用的 SQL Server 关键字及其含义

    SQL Server 是一种关系型数据库管理系统(RDBMS),提供了用于管理和操作数据库的各种。 以下是一些常用的 SQL Server 及其含义: SELECT: 用于从数据库中检索数据。 INSERT: 用于将新记录插入到数据库表中。 UPDATE: 用于更新数据库表中的记录。 DELETE: 用于从数据库表

    2024年02月08日
    浏览(58)
  • Final关键字的使用技巧及其性能优势

    Java中的final用于修饰变量、方法和类,可以让它们在定义后不可更改,从而提高程序的稳定性和可靠性。此外,final还有一些使用技巧和性能优势,本文将详细介绍它们。 在Java中,final用于修饰变量、方法和类,其基本用法如下: 修饰变量 当我们使用f

    2024年02月03日
    浏览(130)
  • unity的C#学习——标识符号、关键字与数据类型及其转换方式

    标识符是用来识别 类、变量、函数 或任何其它用户定义的 项目 。在 C# 中,类的命名必须遵循如下基本规则: 标识符必须以 字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。 标识符中的第一个字符不能是数字。 标识符必须不包含任何

    2024年02月01日
    浏览(46)
  • 帝国cms内容页根据关键字调用相关内容的方法

    我们使用帝国cms的时候,需要调用当前文章的其他相关的文章,根据相关的方式,这样内页关联比较好,对于seo与用户体验来说都是非常好的 代码如下 =$or[title]? =$newstime? }}else{ $mesql2=$empire-query(\\\"select * from {$dbtbpre}ecms_news where id\\\".$navinfor[\\\'id\\\'].\\\" order by rand() desc limit 10\\\");w

    2024年02月03日
    浏览(63)
  • linux 查询 日志 相关操作 及 vim 翻页,检索关键字

    前言:linux 常见操作还是要熟练使用,这里记录一下查询 项目 日志的操作 实时查看打印的日志: tail -f 文件名称 可以实时的查看 日志信息 如果查看其他的日志信息,可以使用vim编辑器 检索 vim 文件名称 进入 vim 模式 shift + :wq可以退出 vim翻页 1.翻整页 Ctrl + f 键 (f 的英文全拼

    2024年02月12日
    浏览(46)
  • Rust中的关键字

    严格 as - 强制类型转换,消除特定包含项的 trait 的歧义,或者对 use 和 extern crate 语句中的项重命名 async - 返回一个 Future 而不是阻塞当前线程( 2018版新增) await - 暂停执行直到 Future 的结果就绪( 2018版新增) break - 立刻退出循环 const - 定义常量或不变裸指针(constant raw

    2024年02月07日
    浏览(40)
  • mysql中的关键字

    MySQL是一种流行的开源关系型数据库管理系统,包含许多,这些在MySQL中具有特殊的含义,用于执行各种数据库操作。以下是MySQL中的一些及其用法: ADD:用于向现有表添加一列或多列。 ALTER:用于修改表的结构,例如更改列名、更改列的数据类型、修改索

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包