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

news2025/1/10 22:14:26

目录

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)

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7.12~7.13学习总结

public static void main(String[] args){File dirnew File("D:\\小花花");boolean flag dir.mkdir();System.out.println(flag);File dirsnew File("D:\\小花花\\你爸爸");dirs.mkdirs();String[]adir.list();//列出下一级;字符串数组for(Stri…

了解 JVM - 认识垃圾回收机制与类加载过程

前言 本篇通过介绍JVM是什么,认识JVM的内存区域的划分,了解类加载过程,JVM中垃圾回收机制,从中了解到垃圾回收机制中如何找到存活对象的方式,引用计数与可达性分析的方式,再释放垃圾对象时使用的方式&…

【YOLO】yolov5的训练策略1 -- 训练热身warmup

目录 一、什么是训练热身二、常见的训练热身1. Constant Warmup2. Linner Warmup2. Cosine Warmup 三、yolov5的训练热身代码 一、什么是训练热身 众所周知学习率是一个非常重要的超参数,直接影响着网络训练的速度和收敛情况。通常情况下,网络开始训练之…

DNS 是如何影响你冲浪速度的?

本文详细介绍了 DNS 相关知识,包括 DNS 工作原理、如何提升域名解析速度、以及 DNS 记录与报文等内容。 1. 域名与域名服务器 在日常上网过程中,出于好记的原因,人们更喜欢在浏览器中输入网站的域名,而不是 IP 地址。比如想要访问…

小红书如何运营 策略方法总结

大家好,我是权知星球,今天跟大家分享一下小红书如何运营和策略方法总结。 小红书是一个生活方式和消费决策平台,并为用户提供入口,作为一个生活方式社区,小红书的独特之处在于其用户发布的内容都来自于真实生活&#…

MySQL-DDL-数据库操作

开发项目流程 数据库设计-DDL DDL:Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表) 数据库 常见操作 查询 查询所有数据库:show databases; 查询当前数据库&#xf…

A Simple Framework for Contrastive Learning of Visual Representations(论文翻译)

A Simple Framework for Contrastive Learning of Visual Representations 摘要1介绍2 方法2.1 对比学习框架2.2 训练大批量数据2.3 评估协议 3.用于对比表示学习的数据增强3.1.数据增强操作的组合对于学习良好的表示至关重要3.2 对比学习需要更强的数据增强比有监督学习 4. 编…

STM32单片机WIFI阿里云老人智能家居语音识别定时吃药

实践制作DIY- GC00158-WIFI阿里云老人智能家居语音识别定时吃药 一、功能说明: 基于STM32单片机设计------WIFI阿里云老人智能家居语音识别定时吃药 二、功能说明: 电路组成:STM32F103CXT6最小系统LD3322语音识别模块LCD1602显示按键1个ULN2…

【网络安全】渗透测试工具——Burp Suite

渗透测试工具Burp Suite主要功能详解 前言一、 Proxy模块1.1 界面布局1.1.1 菜单栏(1) 菜单栏 Burp(2) 菜单栏 project(3) 菜单栏 Intruder(4) 菜单栏 Repeater(5&#x…

微信小程序开发:必须掌握的 HTML、CSS 和 JavaScript 技术

引言 小程序是一种轻量级的应用程序,通过HTML、CSS和JavaScript等前端技术开发,可在移动设备上直接访问和使用,无需下载和安装。 文章目录 引言一、小程序开发的背景和重要性二、HTML、CSS和JavaScript在小程序开发中的作用三、HTML基础知识1…

一篇文章搞定《JVM的完美图解》

一篇文章搞定《JVM的完美图解》 前言常见的问题1、双亲委托机制2、类加载过程加载链接初始化 3、JVM内存结构图方法区堆栈本地方法栈程序计数器 4、对象的组成对象头示例数据对齐字节 5、JVM中怎么确定一个对象是否可以GC引用计数法(早期策略)可达性分析…

Java设计模式之行为型-中介者模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基础概念 中介者模式的核心思想是引入一个中介者对象,来封装和管理对象之间的交互关系。 对象之间不再直接交互,而是通过中介者间接交互。这样可以减少对象之间的依赖&…

浏览器调试技巧

浏览器调试技巧 文章将介绍几个 devtools 技巧。 缩放devtool ui 可能对于某些开发来说devtools 中的文本和按钮太小,使用起来不舒服。而浏览器也提供了可以缩放 devtools UI的方法。 devtools 的用户界面是使用 HTML、CSS 和 JavaScript 构建的,这意…

中国地图数据可视化制作,python的pyecharts模块读取excel中国着色地图可视化

数据格式如下: import pandas as pd from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.globals import ChartType# 读取Excel数据 data pd.read_excel(C:\\Users\\Administrator\\Desktop\\国内数据.xlsx)# 创建地图实例 m…

大学英语四六级考点听力案例-内蒙古民族大学外国语学院四六级考试听力电台

大学英语四六级考点听力案例-内蒙古民族大学外国语学院四六级考试听力电台 北京海特伟业科技有限公司发布于2023年7月13日 文/任洪卓 一、大学英语四六级考点听力广播系统用户需求 内蒙古民族大学位于内蒙古东部通辽市,是一所综合型民族大学,为内蒙古自…

电子水尺——实时监测、高精度测量

法国作家雨果说过:一个城市的良心是下水道。当洪水四溢时,城市的下水道让滔滔之水悄然排淌,城市回归安详。 往期,水位监测总是“被动”执行,这样的做法不仅效率低下,还难以做到及时调度和合理应对。 山东…

2023.7.13-输入一个整数n,输出从1开始累加到n的求和

从1累加到n的计算公式为S(1n)n/2。 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a1;int i 0;int sum 0;printf("整数n的值:");scanf("%d",&a);for (i 0; i < a; i){sum i;}printf("从…

opencv 05 彩色RGB像素值操作

opencv 05 彩色RGB像素值操作 RGB 模式的彩色图像在读入 OpenCV 内进行处理时&#xff0c;会按照行方向依次读取该 RGB 图像的 B 通道、G 通道、R 通道的像素点&#xff0c;并将像素点以行为单位存储在 ndarray 的列中。例如&#xff0c; 有一幅大小为 R 行C 列的原始 RGB 图像…

用户案例 | Apache DolphinScheduler 离线调度在自如多业务场景下的应用与实践

用户案例 | 自如 随着自如业务的快速发展&#xff0c;不断增长的调度任务和历史逾万的存量任务对平台稳定性提出了更高的要求。同时&#xff0c;众多非专业开发人员也需要一种更为“亲民”的调度平台使用体验。 如何满足这些日渐凸显的需求对自如大数据平台的开发团队来说&am…

重复值--Pandas

1. 删除重复行&#xff1a;drop_duplicate() 1.1 函数功能 返回去除重复行的DataFrame&#xff0c;不考虑索引。 1.2 函数语法 DataFrame.drop_duplicates(subsetNone, *, keepfirst, inplaceFalse, ignore_indexFalse)1.3 函数参数 参数含义subset列标签或列标签组成的列…