你在 Python 中常常写的 with..as.. 到底是个啥?

【树莓派4B】八、树莓派软路由,Ubuntu18.04配置路由转发 我的目的是通过把树莓派做成一个软路由,相当于一个智能路由器。 材料 树莓派4B,操作系统其实可以是其他的Linux版本。以为4B自带无线网卡,就用自带无线网卡作为路由出口。 大概思路 具体步骤 配置两个网卡的IP sudo vim /etc/network/interface 这里设置静态IP,也可以动态获取。 #Local loopback auto lo iface lo inet loopback #Ethernet0 auto eth0 iface eth0 inet static addr 阅读详情

with 语句可以说是 Python 中 “人生苦短,我用 Python” 的经典代表之一,它可以使得我们在编写代码的时候非常简短,且行之有效。

举一个简单的例子,在 Java 中,你想要读取一个文件中的内容,一般来说需要自己定义一个这样的读取方法:

而在 Python 中,想要读取文件就可以直接这样:

这样看起来,是挺短呀。

其实文件操作中所涉及到的 try…except…finally 都给封装起来了:

而我们通过 with 拿了对象就可以直接操作了,是不是有点强大,那么它是怎么做到的呢?

接下来就是:学习 python 的正确姿势

with 语句是用于上下文对象的管理,通过它你就可以操作上下文对象:

比如上面这个,在 with 调用后得到的 Handsomeb对象里面,需要用到 __enter__ () 和 __exit__() 这两个方法,也就是说,如果你想要让你创建的对象能被 with 使用,那么你这个对象必须要有 __enter__ () 和 __exit__() 这两个方法。

这两个方法是干什么用的呢?

当我们使用 with 去执行这个对象的时候,就会先去调用 __enter__ () ,最后再调用 __exit__() :

打印出来是这样的:

可以看到,我们使用 with 去调用 get_Handsomeb ,得到的这个对象会先执行“进入 enter 方法”,接着再执行 with 里面的 “get…”,等都执行完毕之后,再去执行 “进入 exit 方法” 。

我们再来看看 with…后面紧跟着的 as 是干嘛的呢?

在这里的 as 后面的变量名称,其实得到的就是 enter 方法返回的值。

你看,我在 enter 方法中定义返回了 “handsomeb” ,然后使用 “with … as h” 的方式获取对象, 从打印结果可以看到:这时候 h 得到的就是 enter 方法中的返回值 “handsomeb” 。

可以返回一个对象:

接着,我们再来看看我们定义的这个 __exit__ 方法,细心点你会发现,这里携带了这么几个参数:type, value, trace。

它们是干嘛的呢?这就是我们开头所说的问题。

我们在操作一些对象的时候,比如操作文件的时候,可能会发现这样那样未知的异常,比如文件的位置找不到了,文件打不开了等等问题,关于这些异常的信息,我们可以在 __exit__ 方法中得到。

举个例子:

我们将type, value, trace这几个参数都打印出来,然后创建一个计算的方法:

不过这个方法执行的是 100/0 ,我们知道 0 是不能作为除数的,这样是会报错的,我们使用 with 来调用下看看:

执行结果是这样的:

可以看到,这些抛出的异常信息,我们可以在 exit 方法中的参数中直接获取,那么就可以在这里做一些事情(对一些异常进行处理)了,比如说,在文件操作中,我们到最后都需要关闭这个文件流的,但是有了 exit 这个方法, Python 直接在里面做了资源关闭操作,我们就不需要再手动去关闭了。

ok,以上就是今天我给你分享的 with 工作方式,总结一下就是:

1.通过 with 语句可以得到一个上下文管理器

2.执行对象

3.加载 __enter__ 方法

4.加载 __exit__ 方法

5.执行 __enter__

6.as 可以得到 enter 的返回值

7.拿到对象执行相关操作

8.执行完了之后调用 __exit__ 方法

9.如果遇到异常,__exit__ 可以获取到异常信息

10.在 __exit__ 中处理异常,返回 True

11.继续执行 with 后面的语句。

以上就是“你在 Python 中常常写的 with…as… 到底是个啥?”的全部内容,希望对你有所帮助。
​
​关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至优快云官方,朋友如果需要可以直接微信扫描下方优快云官方认证二维码免费领取【保证100%免费】。

HRNet训练自己的分类数据 1.搭建环境 为了防止和服务器上的环境冲突,这里利用conda搭建环境。 Install PyTorch=0.4.1 following theofficial instructions git clonehttps://github.com/HRNet/HRNet-Image-Classification Install dependencies: pip install -r requirements.txt ... 阅读详情

相关推荐

CGNS快速入门到实战(二):VS配置调用CGNS静态链接库

CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:(一)CGNS静态链接库编译;(二)VS配置调用CGNS静态链接库;(三)CGNS文件及案例展示。本篇文章重点讲述VS配置调用CGNS静态链接库。

ahang_99的博客 2618

python的 with ... as机制解读

展示python的with ... as机制

weixin_37983220的博客 230

Alphafold2/multimer Conda环境配置与GPU加速优化指南

本文详细介绍了如何在本地服务器或工作站上,通过Conda环境配置并优化GPU加速来部署Alphafold2及其多聚体版本Alphafold2-multimer。内容涵盖从硬件准备、依赖安装、数据库部署到实战预测与常见报错处理的全流程,重点解决了本地安装过程中的依赖冲突与GPU调用失败等关键问题,帮助研究人员高效运行这一蛋白质结构预测工具。

neovim7hacker的博客 470

python中with as 语句的作用以及意义

首先来看一下官方文档对with语句的描述:The with statement:The with statement is used to wrap the execution of a block with methods defined by a context manager (see section With Statement Context Managers). This allows

老潘的博客 8344

微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows]

(1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。

weixin_43101935的博客 1万+

JavaScript - Blob / File / base64 使用场景介绍与相互转换

前言 本文首先介绍一下这三种对象使用场景,最后介绍下它们之间互转格式的解决方案。 您前端一旦涉及到文件或图片上传到服务器, 就势必离不了Blob/File/base64三种主流的类型。 Blob MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 您可以观察到,像一些图片处理插件(例如有名的vue-cropper)图片裁剪插件, 它们将图片处理完毕后,都将使用blob对象返回处理好的图片,供开发者用于上传服务器。

🏆 前端领域优质创作者 4493

python 之 with-as

python with-as

Dayu_log的博客 5792

基于深度确定性策略梯度的永磁同步电机强化学习控制方法

本文提出了一种基于深度确定性策略梯度(DDPG)的永磁同步电机(PMSM)电流内环智能控制方法。首先建立了PMSM在d-q坐标系下的数学模型,分析了传统矢量控制双闭环系统中PI控制器的局限性。针对电流内环控制问题,设计了包含电流跟踪误差、转速信息和历史控制量的状态空间,将电压输出作为动作空间,并构建了兼顾跟踪精度和响应速度的奖励函数。通过DDPG算法训练智能体,使其能够自适应调整控制策略。仿真结果表明,与固定参数的PI控制器相比,DDPG控制器在动态响应速度和抗干扰能力方面具有明显优势,为PMSM高性能控制

huanghm88的专栏 104

Python的With...As 语句:优雅管理资源的技术探索

在Python编程中,`with...as`语句是一项强大而优雅的功能,用于管理资源,如文件、网络连接、数据库连接等。本文将深入介绍`with...as`语句的用法、其工作原理,并通过代码示例解析其实际应用。`with...as`语句是Python中一种上下文管理器的使用方式,主要用于在进入和退出特定代码块时执行必要的操作。最常见的用法是处理资源的分配和释放,确保在离开代码块时资源被正确关闭或释放。

一键难忘的博客 5133

工业机器人抓取目标检测与抓取姿态估计系统:基于YOLOv12与Cornell Grasping Dataset

工业机器人抓取是自动化生产中的核心环节,而精确的目标检测和抓取姿态估计是实现高效抓取的关键。本文将详细介绍如何构建一个完整的工业机器人抓取系统,该系统结合了最新的YOLOv12目标检测算法和Cornell Grasping Dataset的抓取姿态估计,并提供了用户友好的UI界面。本文详细介绍了一个完整的工业机器人抓取系统,该系统结合了YOLOv12目标检测和基于Cornell Grasping Dataset的抓取姿态估计。我们将使用PyQt5构建一个用户友好的界面,集成目标检测和抓取姿态估计功能。

YOLO 574

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

算法大师! 8787

python中with...as的用法

with…as,就是个python控制流语句,像 if ,while一样。 with…as语句是简化版的try except finally语句。 1. try…except语句 try…except的标准格式: try: ## normal block except A: ## exc A block except: ## exc other block else: ## noError block 程序执行流程是: –>执行norm

RayPick的博客 1089

华为OD机试真题2026双机位C卷 Python&JS 语言 实现【主次关联成环警告】

在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:

MISAYAONE的博客 269

python with open as 写文件_Python with as使用

Python with as教程在但是,如果我们在打开文件,或者是在操作文件的过程中,程序出现了异常,那么此时,我们就无法关闭文件,因此,在 Python 中,对应的解决方式是使用 with as 语句操作上下文管理器,它能够帮助我们自动分配并且释放资源。使用 with as 操作已经打开的文件对象(本身就是上下文管理器),无论期间是否抛出异常,都能保证 with as 语句执行完毕后自动关闭已经...

weixin_39581845的博客 289

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python as_你在 Python 中常常写的 with..as.. 到底是个啥?

with 语句可以说是 Python 中 “人生苦短,我用 Python” 的经典代表之一,它可以使得我们在编写代码的时候非常简短,且行之有效。举一个简单的例子,在 Java 中,你想要读取一个文件中的内容,一般来说需要自己定义一个这样的读取方法:而在 Python 中,想要读取文件就可以直接这样:这样看起来,是挺短呀。其实文件操作中所涉及到的 try...except..finally 都给封装...

weixin_39901558的博客 147

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python with as 用法_你在 Python 中常常写的 with..as.. 到底是个啥?

with 语句可以说是 Python 中 “人生苦短,我用 Python” 的经典代表之一,它可以使得我们在编写代码的时候非常简短,且行之有效。举一个简单的例子,在 Java 中,你想要读取一个文件中的内容,一般来说需要自己定义一个这样的读取方法:而在 Python 中,想要读取文件就可以直接这样:这样看起来,是挺短呀。其实文件操作中所涉及到的 try...except..finally 都给封装...

weixin_39650994的博客 94

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python2 with open encoding_python with open as f写中文乱码

python3和python2的写法不一样具体如下:python3:with open(r'd:\ssss.txt','w',encoding='utf-8') as f:f.write(u'中文')python2中open方法是没有encoding这个参数的,如果像python3一样的写法会报异常:TypeError: 'encoding' is an invalid keyword argum...

weixin_39914752的博客 5149

python with open as 写文件_Python文件操作,with open as追加文本内容实例

最常见的读写操作import rewith open('/Users/Mr.Long/Desktop/data.txt', 'w') as f:f.write('hello world')就这样就完成了文件的写操错(此处用with的格式,可以节省很多不必要的麻烦)读操作同理,只是做一下微小的变化处理而已import rewith open('/Users/Mr.Long/Desktop/data....

weixin_34854288的博客 788

python with open as 写文件_随手记:Python读取文件使用with open as 是否需要close?

在使用Python读取文件预处理时,常常会遇到这样的语句:with open(target_path, 'r') as f:for row in csv.reader(open(source_path, 'r')):# print(row[0], row[1])# ......f.close()还有一种写法:G = nx.Graph()datafile = open(filepath)lines ...

weixin_35676504的博客 1855

python with open as f 写韩文中文乱码

python3和python2的写法不一样具体如下: python3: with open(r'd:\ssss.txt','w',encoding='utf-8') as f:   f.write(u'中文') python2中open方法是没有encoding这个参数的,如果像python3一样的写法会报异常:TypeError: 'encoding' is an inv...

dianlei9877的博客 872

java调用python_你在 Python 中常常写的 with..as.. 到底是个啥?

with 语句可以说是 Python 中 “人生苦短,我用 Python” 的经典代表之一,它可以使得我们在编写代码的时候非常简短,且行之有效。举一个简单的例子,在 Java 中,你想要读取一个文件中的内容,一般来说需要自己定义一个这样的读取方法:而在 Python 中,想要读取文件就可以直接这样:这样看起来,是挺短呀。其实文件操作中所涉及到的 try...except..finally 都给封装...

weixin_39728320的博客 116

python with open as f写中文乱码

python3和python2的写法不一样具体如下: python3: with open(r'd:\ssss.txt','w',encoding='utf-8') as f:   f.write(u'中文') python2中open方法是没有encoding这个参数的,如果像python3一样的写法会报异常:TypeError: 'encoding' is an invalid ...

weixin_30367945的博客 1325

python2和python3 with open as f写中文乱码

python3和python2的写法不一样具体如下: python3: with open(r’d:\ssss.txt’,‘w’,encoding=‘utf-8’) as f: f.write(u’中文’) python2中open方法是没有encoding这个参数的,如果像python3一样的写法会报异常:TypeError: ‘encoding’ is an invalid keyword argument for this function python2中需要加上: import sys reloa

QuantSun的博客 2548

Python with...as(转)

1、使用with....as...的原因: python操作文件时,需要打开文件,最后手动关闭文件。 通过使用with...as...不用手动关闭文件。当执行完内容后,自动关闭文件。 2、先说明一个常见问题,文件打开: try: f = open('xxx') do something except: do something finally: f.c...

qq_38847141的博客 137

python 追加写文件_Python文件操作,with open as追加文本内容实例

最常见的读写操作importrewith open('/Users/Mr.Long/Desktop/data.txt', 'w') as f:f.write('hello world')就这样就完成了文件的写操错(此处用with的格式,可以节省很多不必要的麻烦)读操作同理,只是做一下微小的变化处理而已一些正则表达式的关键词w:以写方式打开,a:以追加模式打开 (从 EOF 开始, 必要时创建新文件...

weixin_39976733的博客 425

Python文件操作(文件流的读,写,关闭操作)with as(上下文管理)的应用

一:文件操作 文件的打开操作(打开模式,编码格式) 文件的读,写操作 文件的关闭操作 with as应用 查看内置函数open 1.1文件读取 例1: open函数的mode参数: r :read 只读模式 w :write 覆盖原文件内容,从头开始写 a :append 不覆盖原文件内容,再末尾追加 如果操作文件有中文,encoding = 'utf-8' fs = open('myself.txt', encoding='utf-8') a = fs.read() pri

weixin_45997563的博客 3199
上一篇: Python 只用一行代码,可以实现哪些事儿?
下一篇: 再见Pandas,又一Python数据处理神器
壹只小小码农
博客等级 码龄5年 8101粉丝 1334原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值