当前位置: 首页 > 面试题库 >

尝试通过语句和上下文管理器了解python

陈胤
2023-03-14
问题内容

我对此并不陌生,只是想了解这一with说法。我知道应该替换try/except块。

现在假设我做这样的事情:

try:
   name='rubicon'/2 # to raise an exception
except Exception as e:
   print "no not possible"
finally:
   print "Ok I caught you"

如何用上下文管理器代替它?


问题答案:

with并不能真正代替try/ except,而是try/ finally。不过,在异常情况下,您 可以
使上下文管理器执行与非异常情况不同的操作:

class Mgr(object):
    def __enter__(self): pass
    def __exit__(self, ext, exv, trb):
        if ext is not None: print "no not possible"
        print "OK I caught you"
        return True

with Mgr():
    name='rubicon'/2 #to raise an exception

return True是上下文管理器决定抑制异常的位置(就像您通过不在except子句中重新引发异常一样)。



 类似资料:
  • 本文向大家介绍Python中的上下文管理器和with语句的使用,包括了Python中的上下文管理器和with语句的使用的使用技巧和注意事项,需要的朋友参考一下 Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围。本文是针对于该功能的思考总结。 为什么需要上下文管理器? 首先,需要思索下为什么需要引入上下文管理器。

  • 本文向大家介绍python中with语句结合上下文管理器操作详解,包括了python中with语句结合上下文管理器操作详解的使用技巧和注意事项,需要的朋友参考一下 前言 所谓上下文管理器即在一个类中重写了__enter__方法和__exit__方法的类就可以成为上下文管理器类。 我们可以通过with语句结合上下文管理器简化一些操作。 使用with语句结合自定义上下文管理器完成数据库相应的操作,代码

  • 本文向大家介绍Python上下文管理器和with块详解,包括了Python上下文管理器和with块详解的使用技巧和注意事项,需要的朋友参考一下 上下文管理器和with块,具体内容如下 上下文管理器对象存在的目的是管理 with 语句,就像迭代器的存在是为了管理 for 语句一样。 with 语句的目的是简化 try/finally 模式。这种模式用于保证一段代码运行完毕后执行某项操作,即便那段代码

  • 要使人晓得智慧和训诲,分辨通达的言语。使人处事,领受智慧、仁义、公平、正直的训诲。使愚人灵明、使少年人有知识和谋略。使智慧人听见、增长学问、使聪明人得着智谋、使人明白箴言和譬喻、懂得智慧人的言词和谜语。敬畏耶和华使知识的开端,愚妄人藐视智慧和训诲。 上下文管理器 在《文件(1)》中提到,如果要打开文件,一种比较好的方法是使用with语句,因为这种方法,不仅结构简单,更重要的是不用再单独去判断某种异

  • Context managers for use with the with statement. 注解 When using Python 2.5, you will need to start your fabfile with from __future__ import with_statement in order to make use of the with statement (w

  • 本文向大家介绍Python中的with语句与上下文管理器学习总结,包括了Python中的with语句与上下文管理器学习总结的使用技巧和注意事项,需要的朋友参考一下 0、关于上下文管理器 上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象。 相当于以下情况的简化: 换言之,PEP 343中定义的上下文管理器协议允许将无聊的try...except...fina