with语句

使用with语句替代try-finally 语句,代码更加的简洁清晰

对于需要对资源进行访问的任务,无论在代码运行过程中,是否发 生异常,都会执行必要的清理操作,释放资源。

1.

with open(r"D:\code1\pythontest\mypython.txt") as f:print(f.read())

2.

with open(r"D:\code1\pythontest\mypython.txt") as f:print(f.read())
print(f.read())

3.

with open(r"D:\code1\pythontest\mypython.txt","w") as f:print(f.read())

上下文管理器

上下文管理器是Python中的一种协议,它保证了每次代码执行的一致性

一旦进入上下文管理器,就一定会按照规定的步骤退出

如果合理的设计了退出上下文管理器的步骤,就能够很好的处理异常。

上下文管理器被最多用到的场景是资源清理操作。

实现上下文管理器,只要在类定义时,实现__enter__()方法和__exit__()方法即可

使用with语句访问上下文管理器

with 上下文管理器表达式 [ as 变量]:

语句块

#上下文管理器
class File():def __init__(self,filename,mode):self.filename=filenameself.mode=mode#在with语句块执行前,首先会执行enter()方法def __enter__(self):print("执行__enter__function.")self.f = open(self.filename,self.mode)return self.f#当with语句块执行结束,无论是否出现异常,都会调用__exit__()方法#通常将清除、释放资源的操作写在__exit__()方法中def __exit__(self,*args):print("执行s__exit__function.")self.f.close()with File(r'D:\code1\pythontest\mypython.txt','r') as f:print(f.read())

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python上下文管理器)相关推荐

  1. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python异常处理)

    异常: 程序运行时的错误,对应一个Python对象. try: 语句块 except 异常1 as 错误原因: 出现异常1后的处理代码 except 异常2 as 错误原因: 出现异常2后的处理代码 ...

  2. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python模块、包和库)

    模块(Module) 模块是一个python文件(.py),拥有多个功能相近的函数或类. 便于代码复用,提高编程效率,提高了代码的可维护性. 避免函数名和变量名冲突. 包(Package) 为了避免模 ...

  3. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python列表与元组)

    序列数据结构 1.成员是有序排列的 2.每个元素的位置称为下标或索引 3.通过索引访问序列中的成员 4.Python中的序列数据类型有字符串.列表.元组 "abc" ≠ " ...

  4. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python文件)

    路径 绝对路径:从盘符开始的路径 相对路径:从当前目录(工作目录)的路径 获取当前路径 #获取当前工作目录 import os print(os.getcwd()) 访问模式 文件对象=open(文件 ...

  5. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(Python面向对象的编程)

    面向对象的程序设计(OOP) 对象(object): 将属性和方 法封装在一起. 类(class): 具有相同的属性和方法的对象集合. 对象是类的实例 子类继承了父类的全部属性和方法, 并且也有自己特 ...

  6. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python函数)

    函数(function) :实现某种特定功能的代码块 优点:程序简洁,可重复调用.封装性好.便于共享 类别:系统函数和用户自定义函数 Python内置函数 数学运算函数 print(abs(-1)) ...

  7. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python字典和集合)

    字典和集合 字典 每个字典元素都是一个键(关键字)/值(关键字对应的取值)对 #创建字典 dic_score={"语文":80,"数学":99} #打印 pri ...

  8. 神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python运算符和表达式)

    从程序中学习知识点 1.算术运算符 #运算符(Operator):完成不同类型的常量.变量之间的运算 #除法运算 / 结果是一个浮点型的精确数的值,与java等其他语言的不同之处 print(7/2, ...

  9. 神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python常量、变量和表达式)

    从程序中学习知识点 1. #支持6中表达形式 数字 字符串 列表 元组 字典 集合 #数字 整型(正整数 负整数 零) #Python3中的整数可以任意大,而不用担心位数不够而导致溢出的情况 intn ...

最新文章

  1. 关于Quartz的Job 不能被注入以及SpringAop对Job失效
  2. php输出网络连接,如何打开php文件和输出内容
  3. 这引人联想的机械右手!玩转魔方,灵活不输人类,OpenAI:前所未有
  4. redux VS mobx (装饰器配合使用)
  5. 暂停更新CSDN博客
  6. mysql数据库进阶_MySQL T2-数据库进阶?
  7. 亚马逊独霸美国安云计算未来十年订单;英伟达推出首个元宇宙平台;华为云、天翼云会合并吗?...
  8. 215.数组中的第K个最大元素/347. 前 K 个高频元素
  9. 为什么Linux不需要碎片整理?
  10. 美团股价盘中涨幅超7% 市值重回2万亿港元关口
  11. MapJoin的原理及案例
  12. Java Web乱码分析及解决方式(一)——GET请求乱码
  13. 生死狙击服务器名字怎么修改器,生死狙击修改金币方法
  14. 关闭浏览器后Session失效原因分析
  15. Comet OJ Contest 4
  16. paip.提升效率--批量变量赋值 “多元”赋值
  17. 妲己机器人功能_来自机器人影响者的5个功能强大的Instagram教训
  18. mysql建表与oracle_mysql和oracle建表语句以及数据类型的区别
  19. 基于vue.js仿淘宝收货地址,并设置默认地址
  20. 深度强化学习方法(DQN)玩转Atari游戏(pong)

热门文章

  1. 软件工程综合实践专题——个人博客作业1
  2. java程序员经常使用的Intellij Idea插件
  3. Linux空硬盘从分区到挂载
  4. JS 判断手机操作系统代码
  5. Spring基础学习笔记-Bean的基础知识
  6. nylon尼龙的来历
  7. charles抓包工具使用指南
  8. Android培训翻译_使你的程序感知位置
  9. 网络数据库的复制和同步(转摘)
  10. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第37篇]The Number Field Sieve