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

图书馆网站参考咨询建设wordpress安装500

图书馆网站参考咨询建设,wordpress安装500,刚做的单页网站怎么预览,php实战做网站视频教程上下文管理器(Context managers) 上下文管理器允许你在有需要的时候#xff0c;精确地分配和释放资源。 使用上下文管理器最广泛的案例就是with语句了。 想象下你有两个需要结对执行的相关操作#xff0c;然后还要在它们中间放置一段代码。 上下文管理器就是专门让你做这种…上下文管理器(Context managers) 上下文管理器允许你在有需要的时候精确地分配和释放资源。 使用上下文管理器最广泛的案例就是with语句了。 想象下你有两个需要结对执行的相关操作然后还要在它们中间放置一段代码。 上下文管理器就是专门让你做这种事情的。举个例子 with open(some_file, w) as opened_file:opened_file.write(Hola!)上面这段代码打开了一个文件往里面写入了一些数据然后关闭该文件。如果在往文件写数据时发生异常它也会尝试去关闭文件。上面那段代码与这一段是等价的 file open(some_file, w) try:file.write(Hola!) finally:file.close()当与第一个例子对比时我们可以看到通过使用with许多样板代码(boilerplate code)被消掉了。 这就是with语句的主要优势它确保我们的文件会被关闭而不用关注嵌套代码如何退出。 上下文管理器的一个常见用例是资源的加锁和解锁以及关闭已打开的文件就像我已经展示给你看的。 让我们看看如何来实现我们自己的上下文管理器。这会让我们更完全地理解在这些场景背后都发生着什么。 1、基于类的实现 一个上下文管理器的类最起码要定义__enter__和__exit__方法。 让我们来构造我们自己的开启文件的上下文管理器并学习下基础知识。 class File(object):def __init__(self, file_name, method):self.file_obj open(file_name, method)def __enter__(self):return self.file_objdef __exit__(self, type, value, traceback):self.file_obj.close()通过定义__enter__和__exit__方法我们可以在with语句里使用它。我们来试试 with File(demo.txt, w) as opened_file:opened_file.write(Hola!)我们的__exit__函数接受三个参数。这些参数对于每个上下文管理器类中的__exit__方法都是必须的。我们来谈谈在底层都发生了什么。 with语句先暂存了File类的__exit__方法然后它调用File类的__enter__方法__enter__方法打开文件并返回给with语句打开的文件句柄被传递给opened_file参数我们使用.write()来写文件with语句调用之前暂存的__exit__方法__exit__方法关闭了文件 2、处理异常 我们还没有谈到__exit__方法的这三个参数type, value和traceback。 在第4步和第6步之间如果发生异常Python会将异常的type,value和traceback传递给__exit__方法。 它让__exit__方法来决定如何关闭文件以及是否需要其他步骤。在我们的案例中我们并没有注意它们。 那如果我们的文件对象抛出一个异常呢万一我们尝试访问文件对象的一个不支持的方法。举个例子 with File(demo.txt, w) as opened_file:opened_file.undefined_function(Hola!)我们来列一下当异常发生时with语句会采取哪些步骤。 它把异常的type,value和traceback传递给__exit__方法它让__exit__方法来处理异常如果__exit__返回的是True那么这个异常就被优雅地处理了。如果__exit__返回的是True以外的任何东西那么这个异常将被with语句抛出。 在我们的案例中__exit__方法返回的是None(如果没有return语句那么方法会返回None)。因此with语句抛出了那个异常。 Traceback (most recent call last):File stdin, line 2, in module AttributeError: file object has no attribute undefined_function我们尝试下在__exit__方法中处理异常 class File(object):def __init__(self, file_name, method):self.file_obj open(file_name, method)def __enter__(self):return self.file_objdef __exit__(self, type, value, traceback):print(Exception has been handled)self.file_obj.close()return True with File(demo.txt, w) as opened_file:opened_file.undefined_function() # Output: Exception has been handled我们的__exit__方法返回了True,因此没有异常会被with语句抛出。 再看一个案例 class Sample:def __enter__(self):#可以实现获取资源的方法print(enter)return selfdef __exit__(self, exc_type, exc_val, exc_tb):#可以写释放资源的方法print(exit)def do_something(self):print(do something)with Sample() as sample:sample.do_something()输出结果 enter do something exit3、基于生成器的实现 上面这种方式不是实现上下文管理器的唯一方式。还有一种方式我们还可以用装饰器(decorators)和生成器(generators)来实现上下文管理器。 Python有个contextlib模块专门用于这个目的。我们可以使用一个生成器函数来实现一个上下文管理器而不是使用一个类。 让我们看看一个基本的没用的例子 from contextlib import contextmanager contextmanager def open_file(name):f open(name, w)yield ff.close()这个实现方式看起来更加直观和简单。然而这个方法需要关于生成器、yield和装饰器的一些知识。在这个例子中我们还没有捕捉可能产生的任何异常。它的工作方式和之前的方法大致相同。 让我们小小地剖析下这个方法。 Python解释器遇到了yield关键字。因为这个缘故它创建了一个生成器而不是一个普通的函数。因为这个装饰器contextmanager会被调用并传入函数名open_file作为参数。contextmanager函数返回一个以GeneratorContextManager对象封装过的生成器。这个GeneratorContextManager被赋值给open_file函数我们实际上是在调用GeneratorContextManager对象。 那现在我们既然知道了所有这些我们可以用这个新生成的上下文管理器了像这样 with open_file(some_file) as f:f.write(hola!)
http://www.pierceye.com/news/570137/

相关文章:

  • 网站开发用到哪些技术中国建设集团官网
  • 淘宝客网站建设多少钱可以做微课ppt模板 网站有哪些内容
  • 太原做网站的wordpress 手机端api
  • 网站开发与rest老河口网站设计
  • 广州个人网站搭建二次元wordpress博客
  • 企业网站用什么cms比较好平面设计在哪里学
  • 网站什么也没动怎么不收录啦wordpress边栏扩大尺寸
  • 专业的聊城网站建设成都品牌策划设计公司
  • 新开神途手游发布网站wordpress 获取分类地址
  • 网站建设亿码酷出名5万站霸屏
  • 仿制网站建设山东关键词优化联系电话
  • 律所网站建设国队男子接力赛有哪些做短租的网站
  • 常用的网站推广方法制作简历模板网站
  • c2c网站有哪些网站可以先做代码么
  • 阿里云简单网站建设wordpress+调整+行距
  • 想自己做网站推广郴州网站建设哪里比较好
  • 实用网站推荐小程序权限超时
  • 济源市建设工程管理处网站wordpress模板搜索功能404
  • 成都三网合一网站建设网站广告收费标准
  • 网站制作咨询电话网站托管费用多少
  • 做网站 需求怎么写成都优化网站源头厂家
  • 我买了一个备案网站 可是公司注销了学服装设计的就业方向
  • 网站后台上传不了图片请人做网站需要注意什么条件
  • 建网站哪家好案例网页设计感悟与体会
  • 做网站要实名吗深圳货拉拉
  • 综合门户网站是什么意思建设机械网站
  • 主题资源网站建设作业高级网站开发工程师考试题
  • 含山建设局网站免费的个人简历模板文档
  • 门户网站建设推荐高校英文网站建设 文献综述
  • 织梦网站备案免费咨询网站