Python如何使用装饰器(Decorator)修改yield function返回值

来源:互联网 时间:2017-06-01

在Python中我们常常使用装饰器来扩展一个函数的功能,如果被装饰的函数中有使用yield关键字,函数函数的可能是一个iterable,我们要修改其返回值该如何解决呢?便需要采用下面的写法:

#!/usr/bin/env python# -*- coding:utf-8 -*-import itertools, functoolsdef testWrapper(func): @functools.wraps(func) def wrapper(*args, **kw): f = func(*args, **kw) for item in f: yield 'wrap: ' + str(item) return [email protected] test(): for i in range(10): yield ifor item in test(): print item

相关阅读:
Top