python文件之上下文管理语句with,python实现上下文管理器

  python文件之上下文管理语句with,python实现上下文管理器

  本文介绍了python内置模块的上下文管理contextlib,通过示例代码对其进行了非常详细的介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

  Python当我们打开文本时,我们通常使用with语句。中with语句允许我们非常方便地使用资源而不用担心资源没有关闭。

  用open(/路径/文件名, r )作为f:

  阅读()

  但是,并不是只有open()函数返回的fp对象可以使用with语句。实际上,只要正确实现了上下文管理,任何对象都可以使用with语句。

  上下文管理通过两种方法实现:__enter__和__exit__。例如,下面的类实现了这两个方法:

  类别查询(对象):

  def __init__(self,name):

  self.name=name

  def __enter__(self):

  打印(“开始”)

  回归自我

  def __exit__(self,exc_type,exc_value,traceback):

  如果exc_type:

  打印(“错误”)

  else:

  打印(“结束”)

  定义查询(自身):

  打印(查询有关%s的信息.% self.name)

  这样,我们可以为with语句使用我们自己的资源对象。

  查询( Bob )为q:

  q.query()

  

一、@contextmanager

  编写__enter__和__exit__还是比较繁琐的,所以Python的标准库contextlib提供了更简单的编写方式。上面的代码可以重写为:

  从上下文库导入上下文管理器

  类别查询(对象):

  def __init__(self,name):

  self.name=name

  定义查询(自身):

  打印(查询有关%s的信息.% self.name)

  @上下文管理器

  定义创建查询(名称):

  打印(“开始”)

  q=查询(名称)

  产量q

  打印(“结束”)

  @contextmanager这个装饰器接受一个生成器,用.作为var with yield语句,然后,with语句可以正常工作:

  使用create_query(Bob )作为q:

  q.query()

  很多时候,我们希望在某个代码执行前后自动执行某个特定的代码,也可以使用@contextmanager来实现。

  @上下文管理器

  定义标签(名称):

  打印( %s % name)

  产量

  打印( % name)

  带标签( h1):

  打印(“你好”)

  打印(“世界”)

  上面的代码执行结果:

  你好

  世界

  /h1

  代码的执行顺序是:

  with语句在yield之前首先执行语句,因此打印出。yield调用将执行with语句中的所有语句,因此打印出hello和world。最后,在yield之后执行该语句将打印出结果

二、@closing

  如果一个对象没有实现context,就不能使用with语句,但是可以使用closing()把对象变成context对象。

  从上下文库导入关闭

  从urllib.request导入urlopen

  关闭(urlopen(https://www.python.org ))作为页面:

  对于第:页中的行

  打印(行)

  关闭也是@contextmanager修饰的生成器。

  @上下文管理器

  定义关闭(事物):

  尝试:

  让出东西

  最后:

  thing.close()

  它的功能是把任意对象变成上下文对象,用语句支持。

  关于python内置模块contextlib的上下文管理的这篇文章到此结束。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python文件路径操作方法总结怎么写,python文件路径操作方法总结表,python文件路径操作方法总结
  • python文件路径操作方法总结怎么写,python文件路径操作方法总结图
  • ,,PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
  • python文件加密存储,python通过文件读写,复制图片
  • python文件打开的默认方式是只读,python以只读方式打开文本文件的参数
  • python文件读写,python将数据写入文件和从文件读取
  • 怎么把python文件变成可执行exe,python将py文件编译成exe文件
  • 打开python文件的两种方式,python文件是怎么打开
  • python文件操作write,python文件write函数的用法
  • linux如何编译python文件,linux上python编译器
  • python打不开文件怎么回事,做好的python文件直接打开怎么不能用
  • python中绝对路径,python文件相对路径怎么写
  • python对文件的操作方法有哪些,python文件的基本操作
  • python关于文件的题目,python文件概述
  • python文件可以直接运行吗,python直接运行
  • 留言与评论(共有 条评论)
       
    验证码: