生成器:
生成器的意义是把一次性的生成大批量的数据变成多次生成,从而不会造成内存紧张。
特征:使用yield的方法。本质上生成器也是迭代器。
装饰器
作用:分为装饰者和被装饰者,装饰者扩展了被装饰者的功能。比如日志功能,比如想打印一些方法的方法名,可以做一个装饰者(A方法),使用这个A类装饰这些方法,就可以比较轻松的打印这些方法的方法名。
主要特征:使用@ ,@wraps符号,装饰者可以是方法,也可以是类,它的使用是基于闭包的
举例:
from functools import wraps def logit(func): @wraps(func) def with_logging(*args, **kwargs): print(func.__name__ + " was called") return func(*args, **kwargs) return with_logging @logit def addition_func(x): """Do some math.""" print(x + x) if __name__ == "__main__": addition_func(3)