直接把参考的文章放上面吧 :这个更专业,可以直接看这个。

https://www.ibm.com/developerworks/cn/opensource/os-cn-pythonwith/

之前在有些教程中看到了如下的的代码:

1 with open("/tmp/foo.txt") as file:
2     data = file.read()

居然也可以这么写。具体是什么意思呢,with是怎么用的。

废话不多说,以下是我自己的理解:

首先with的作用:  

使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。

例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

其次with只有特定场合下才能使用。,这个特定场合只的是那些支持了上下文管理器的对象。

这些对象有:

1 file
2 decimal.Context
3 thread.LockType
4 threading.Lock
5 threading.RLock
6 threading.Condition
7 threading.Semaphore
8 threading.BoundedSemaphore

那么什么是上下文管理器:

  这个管理器就是在对象内实现了两个方法:__enter__() 和__exit__()

  __enter__()方法会在with的代码块执行之前执行,__exit__()会在代码块执行结束后执行。

  __exit__()方法内会自带当前对象的清理方法。

with语句类似

  try :

  except:

  finally:

的功能:但是with语句更简洁。而且更安全。代码量更少。

with 用法:

格式:

    with context_expression [as target(s)]:with-body

例子:

    with open(r'somefileName') as somefile:for line in somefile:print line# ...more code

with后面为一个表达式,表达式返回的是一个上下文管理器对象,我的理解就是表达式的返回结果。使用as 可以将这个结果赋值给某个变量。方便之后操作。

一个感觉更牛掰的例子:

nested 函数:

    with nested(A(), B(), C()) as (X, Y, Z):# with-body code here

等同于:

    with A() as X:with B() as Y:with C() as Z:# with-body code here

直接with后面的表达式就是个方法。并且把连着三个函数的方法直接赋值给不同变量。

上下文管理器可以自定义。也可以重写__enter__()和__exit__()方法。

转载于:https://www.cnblogs.com/zhangkaikai/p/6669750.html

Python with语句相关推荐

  1. 忘了python关键语句?这份备忘录拯救你的记忆

    忘了Python关键语句?这份备忘录拯救你的记忆 今天要介绍的 Python 3 Cheat Sheet 由法国国家科学研究中心(CNRS)的法国机械工程与信息技术实验室(LIMSI)的工程师 Lau ...

  2. 包教包会!7段代码带你玩转Python条件语句(附代码)

    来源:大数据 本文约5200字,建议阅读10分钟. 本文介绍了Python条件语句常用的7段代码. [ 导 读 ]条件语句通过一个或多个布尔表达式的执行结果(真值或假值)决定下一步的执行方向.所谓布尔 ...

  3. python入门语句_Python 快速入门笔记(5):语句

    本系列随笔是本人的学习笔记,初学阶段难免会有理解不当之处,错误之处恳请指正.转载请注明出处: https://www.cnblogs.com/itwhite/p/12297769.html. 简介 p ...

  4. python“ with”语句的用途是什么?

    今天,我第一次碰到了Python with语句. 我已经使用Python几个月了,甚至都不知道它的存在! 考虑到它的地位有些晦涩,我认为值得一问: Python with语句旨在用于什么? 你用它来做 ...

  5. python循环语句-Python-循环语句及循环控制语句

    循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式: Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环): ...

  6. python基本语法语句-Python基本语句

    一.Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非 ...

  7. python基本语法语句-python基本语句有哪些

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.下面我们就为 ...

  8. python输入语句-python输入语句

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. python条件语句目录:1. 分支语句(if...else...)2. ...

  9. python条件语句-Python3 条件控制

    Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: 代码执行过程: if 语句 ...

  10. python条件语句-Python 条件语句

    Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.高佣联盟 www.cgewang.com 可以通过下图来简单了解条件语句的执行过 ...

最新文章

  1. D.Digits 思维dp 取log乘积变成加法
  2. Apache与Tomcat联系及区别(转)
  3. PyTorch随笔-1
  4. Tomcat、JDK 历史版本下载地址
  5. linux——客户端服务器文件传输
  6. MakersPlace将启动1美元特价的Beeple限量NFT抽奖活动
  7. 凑热闹,谈密码,Challenge-Response密码验证
  8. 大数据技术Hadoop介绍
  9. 自定义无穷大∞的显示内容
  10. 移动互联软件技术与实践demo
  11. 美信科技监控易:智慧高校一体化综合监控解决方案
  12. Y430P 重装Ubuntu16.04双系统以及装完系统要做的事
  13. 传奇服务器容易受到什么攻击,怎么防御攻击?
  14. 开发右脑,数字桩记忆扑克牌训练教程
  15. 杭州河坊街特色手机饰品——招财猫!
  16. 二维码网址的应用(多图)
  17. ubuntu 终端常用命令大全
  18. arcgis pro 2.5 安装教程
  19. 北京中考英语听说计算机考试时间,2019年北京中考英语听说考时间确定
  20. SV学习笔记—多态与类型转换

热门文章

  1. Proxool 连接池销毁问题
  2. ip classless作用
  3. acctmod-ftp.sh
  4. IOS开发中发送Email的两种方法
  5. jQuery中FormData的使用
  6. ECharts简单的运行示列(固定数据和交互数据库)
  7. codevs1245 最小的N个和
  8. Nginx配置——搭建 Nginx 高可用集群(双机热备)
  9. 动画 Interpolator
  10. Android 打包流程