python中contextmanager装饰的方法

(推荐操作系统:windows7系统、Python 3.9.1、DELL G3电脑。)

1、说明

contextmanager 用于对生成器函数进行装饰,生成器函数被装饰以后,返回的是一个上下文管理器,其 enter() 和 exit() 方法由 contextmanager 负责提供,而不再是之前的迭代子。被装饰的生成器函数只能产生一个值,否则会导致异常 RuntimeError;产生的值会赋值给 as 子句中的 target,如果使用了 as 子句的话。下面看一个简单的例子。

2、装饰器 contextmanager实例

fromcontextlibimportcontextmanager
@contextmanager
defdemo():
print'[Allocateresources]'
print'Codebeforeyield-statementexecutesin__enter__'
yield'***contextmanagerdemo***'
print'Codeafteryield-statementexecutesin__exit__'
print'[Freeresources]'

withdemo()asvalue:
print'AssignedValue:%s'%value
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。