Python高阶 ---上下文管理器

上下文管理器概念:

    1)上下文管理器是一个Python对象,为操作提供了额外的上下文信息。这种额外的信息,在使用with语句初始化上下文,以及完成with块中 的所有代码时,采用可调用的形式。

    2)要实现一个上下文管理器,就得在类里实现__enter__ 和 __exit__ 这两个方法,这个类的实例就是一个上下文管理器。

    3)上下文表达式必须要返回一个上下文管理器。可以是__enter__ 方法的返回值。

 

基本语法:

with EXPR  as  VAR:

  BLOCK

 

注:这个BLOCK 里的函数可以是上下文管理器中自定义的函数,也可以是外部的自定义函数,这样就实现了对外部数据的管理;

 

 

作用:1、可以以更加优雅的方式,操作(创建、获取、释放)资源,如文件操作、数据库连接;

   2、可以以一种更加优雅的方式,处理异常;

 

  -- object.__enter__(self)

    输入与此对象相关的运行时上下文,如果存在的话,with语句将绑定该方法的返回值到该语句的as字句中指定的目标。

  -- object.__exit__(self, exc_type, exc_val, exc_tb)

    exc_type:异常类型

    exc_val:异常值

    exc_tb:异常回溯追踪

    __exit__ 方法不会自动执行,需要赋值以上的参数,用来回收资源和处理异常;

    即退出与此对象相关的运行时上下文,参数描述导致上下文退出的异常,如果该上下文退出时没有异常,三个参数都将为None。如果提供了一个异常,并且该方法希望抑制该异常(即防止它被传播),它应该返回一个真值。否则,在退出此方法后,异常将被正常处理,注意__exit__()方法不应该重新抛出传递进去的异常;这是调用者的责任。

    这个方法只能返回两种值True 或者 False,True表示外部不会抛出异常,False表示外部还会抛出异常。

 

例子:

  

 

 

  

posted @ 2022-01-18 14:29  哩子吖  阅读(206)  评论(0)    收藏  举报