上下文管理器

Day32 上下文管理器

什么是上下文管理?如何实现上下文管理?with 语句的上下文管理、contextlib模块、functools.total_ordering装饰器

08-22侠课岛    基础入门       

后端/后端/Python 由浅入深入门 12     0     210

总结

1.什么是上下文管理

  • 上下文管理器是一个包装任意代码块的对象,上下文管理器保证进入上下文管理器时,每次代码执行的一致性,当退出上下文管理器时,相关的资源会被正确的回收;

  • 上下文管理器一定能够保证退出步骤的执行,不用再调用close()关闭文件;

2.如何实现上下文管理器

  • 实现上下文管理器有两种方式,一个是通过类实现__enter____exit__方法,也就是通过with语句进行上下文管理;

  • 第二种是通过contextlib模块装饰器和生成器实现上下文管理;

3.with 语句的上下文管理

  • with语句的语法为:with 表达式 [as 目标]:代码块

  • 当with遇到上下文管理器,就会在执行语句体之前,先执行上下文管理器的__enter__方法,然后再执行语句体,执行完语句体后,最后执行__exit__方法;

  • with语句支持嵌套,支持多个with子句,它们两者可以相互转换;

4.contextlib模块

  • contextlib模块是Python标准库提供的更加易用的上下文管理器工具模块;

  • 它是通过装饰器实现的,不需要再创建类以及使用__enter____exit__这两个方法,比with语句更加方便;

  • @contextmanager是一个装饰器decorator,它接收一个生成器generator,把生成器里yield的值赋给with...as后的变量,然后正常执行with语句;

  • closing 也是一个经过 @contextmanager 装饰的装饰器,closing()可以把对象变为上下文对象,然后使用with语句(前提是这个对象能调用close()方法!);

5.functools.total_ordering装饰器

  • 这个装饰器是在python2.7的时候加上的,它是针对某个类如果定义了__lt____le____gt____ge__这些方法中的至少一个,使用该装饰器,则会自动的把其他几个比较函数也实现在该类中;

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

12

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录



|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?