当前位置: 首页 > news >正文

电商加盟的网站建设域名状态查询工具

电商加盟的网站建设,域名状态查询工具,顺德网站建设信息,英德市住房城乡建设局网站with语句的应用场景编程中有很多操作都是配套使用的,这种配套的流程可以称为计算过程,Python语言为这种计算过程专门设计了一种结构:with语句。比如文件处理就是这类计算过程的典型代表。使用with语句前后对比没有使用with语句之前&#xff0…

with语句的应用场景

编程中有很多操作都是配套使用的,这种配套的流程可以称为计算过程,Python语言为这种计算过程专门设计了一种结构:with语句。比如文件处理就是这类计算过程的典型代表。

使用with语句前后对比

没有使用with语句之前,我们是这样打开一个文件的:

try:

# 1. [进入]

f = open('a.txt', 'r', encoding="utf-8")

# 2. [执行]

print(f.read())

finally:

if f:

# 3. [退出]

f.close()

python操作文件的流程一般就是这三步:

[进入]用只读方式打开文件

如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在

[执行]读取文件内容

如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示

[退出]关闭打开的文件

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

思考为什么关闭文件操作一定要放在finallly语句里?

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现。

发现共性:

我们发现其实这种过程化的语句有共性,比如说在进去一个片段前必须做某种超赞,处理工作后又需要执行一个结束操作。比如上面的这段代码:

finally:

if f:

f.close()

就可以做一个封装。

使用with语句后,我们是这样打开一个文件的:

with open("a.txt", "r", encoding="utf-8") as f:

print(f.read())

这个with语句和前面的try ... finally结构是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

with语句的执行原理

从解释器的角度去理解with语句执行流程。

with语句的基本形式是:

with 表达式 as 变量:

语句块

这样的一段代码可以称为一个上下文(context),在执行with语句时,解释器会先求出表达式的值,这个值(对象)是一个上下文管理器,并且这个对象拥有如下类构造方法:

def __enter__():

# 描述进入上下文的动作

pass

def __exit__():

# 描述退出上下文的动作

pass

with语句在求出这个上下文管理器对象之后,自动执行进入方法,并将这个对象的返回值赋值于 as 之后的变量,然后执行语句块。然后在退出上下文前,自动执行对象的退出方法。

python系统和标准库的一些类型定义了这对操作,可以直接用于with语句。比如文件对象就直接支持这一对操作,因此可以用在with语句的头部。

如果你也有类似的计算过程需要抽取出来,那么可以自定义一个类,并且包含进入、退出方法。

总结

打开文件读写、用pickle包完成数据的存储、恢复的操作,都非常适合使用with语句。

pickle包的使用案例:

try:

with open("phone.pickle", "wb") as outf:

pickle.dump("13193388105", outf)

except:

print("file have errow.")

try:

with open("phone.pickle", "rb") as outf:

data = pickle.load(outf)

print(type(data))

print(data)

except:

print("file have errow.")

我总结了两个使用with语句的优点:

采用with语句的代码更简洁

防止因为忘记写f.close()而引发的错误

一个对象的操作有进入、退出过程可以抽取出来,并做成自动化执行

参考

《从问题到程序用Python编程和计算》

http://www.lbrq.cn/news/2733229.html

相关文章:

  • 嘉兴制作网站收录查询
  • 唐山市住房建设委官方网站网站怎样优化seo
  • 官网网站建设公司域名停靠
  • 做网站功能的框架结构图网络营销公司业务范围
  • 辰景青岛网站建设视频广告接单平台
  • top后缀做网站好不好厦门seo关键词优化培训
  • 青海网站建设费用价格上海网络seo
  • php动态网站开发教学视频企业软文代写
  • 做网站的模仿还要去量宽高吗南沙seo培训
  • 企业网站模板湖南岚鸿模板软文是什么意思?
  • 达内教育学费价目表优化模型有哪些
  • 门户网站项目开发案例百度集团公司简介
  • 电商网站业务流程推广平台都有哪些
  • wordpress进入后台空白镇江百度seo
  • 网站开发总监长春网站制作企业
  • 旅游网站首页网络推广公司十大排名
  • 兰州网站建设公司登录百度账号
  • 中国建设银行金华分行网站seo网站营销推广
  • 书画网站 建设方案广州网站优化公司排名
  • 网站开发的工作流程二级子域名ip地址查询
  • 辛集做网站网络销售平台
  • 专业机票网站建设营销策划方案
  • 多站点wordpress简数采集器宁波优化seo是什么
  • 中山网站建设文化咨询百度惠生活商家入驻
  • erp二次开发好还是网站开发好网站结构有哪几种
  • 郑州做营销型网站建设全国疫情最新消息
  • 微信上的小说网站是怎么做的昆明seo网站建设
  • 网站备案 法人代表厦门百度竞价开户
  • 上海建设银行官网网站6视频优化是什么意思
  • php网站建设的公司宝鸡网站seo
  • illustrator插件大全 免费插件介绍 Ai设计插件集合 (3)
  • cPanel Python 应用部署流程
  • 探索粒子世界:从基础理论到前沿应用与未来展望
  • Day2--滑动窗口与双指针--2090. 半径为 k 的子数组平均值,2379. 得到 K 个黑块的最少涂色次数,2841. 几乎唯一子数组的最大和
  • Javar如何用RabbitMQ订单超时处理
  • GPT 解码策略全解析:从 Beam Search 到 Top-p 采样