装饰器
-- 用于拓展原来函数功能的一种函数
-- 在不用更改原函数代码的前提下给函数增加新的功能
实现装饰器:
![](https://img.haomeiwen.com/i15947932/ea4a42071354f44e.png)
![](https://img.haomeiwen.com/i15947932/985a3713dc97fbda.png)
带参数的装饰器
from functools import wraps
@wraps(func)可以保留原函数的一些信息
![](https://img.haomeiwen.com/i15947932/9242d2783e8a6fd7.png)
![](https://img.haomeiwen.com/i15947932/01775b2682e997aa.png)
类的装饰器
![](https://img.haomeiwen.com/i15947932/95158119cf085220.png)
![](https://img.haomeiwen.com/i15947932/ffb5902a1128a078.png)
迭代器
迭代(iterate)意味着重复对此,就像循环那样(list,tuple)
实现了方法__iter__的对象是可迭代的,而实现了方法__next__的对象是迭代器
调用__next__时(或next()),迭代器返回其下一个值
如果迭代器没有可供返回的值,触发StopIteration异常
从迭代器创建序列
![](https://img.haomeiwen.com/i15947932/dfa04b9fb1aaa040.png)
![](https://img.haomeiwen.com/i15947932/510b4ae3cbfa2501.png)
通过对可迭代对象调用内置函数iter,可获得一个迭代器
![](https://img.haomeiwen.com/i15947932/b3683f342a2db634.png)
生成器
每次使用yield生成一个值后,函数都将冻结,即在次停止执行
被重新唤醒后,函数将从停止的地方开始继续执行
![](https://img.haomeiwen.com/i15947932/15e3d77eb12dd65c.png)
实例
![](https://img.haomeiwen.com/i15947932/1a98654da01886e1.png)
![](https://img.haomeiwen.com/i15947932/9842d90372625e58.png)
网友评论