day13 迭代器和生成器
# 迭代器和装饰器 # 迭代器: # 双下方法:很少直接调用的方法。一般情况下,是通过其他语法触发的 # 可迭代的 —— 可迭代协议 含有__iter__的方法(‘__iter__’in dir(数据)) # 可迭代的一定可以被for循环 # 迭代器协议: 含有__iter__和__next__方法 # 迭代器一定是可迭代的,可迭代的通过调用iter()方法就能得到一个迭代器 # 迭代器的特点: # 很方便使用,且只能取所有的数据取一次 # 节省内存空间 # 生成器 # 生成器的本质就是迭代器 # 生成器的表现形式 # 生成器函数 # 生成器表达式 # 生成器函数: # 含有yield关键字的函数就是生成器函数 # 特点: # 调用函数的之后函数不执行,返回一个生成器 # 每次调用__next__()方法的时候会取到一个值 # 直到取完最后一个,再执行next会报错