python学习之老男孩python全栈第九期_第二周学习总结
迭代器 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的 1. 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir(数据) ) 可迭代的一定可以被for循环 2. 迭代器协议:含有__iter__、__next__的方法 迭代器一定可迭代,可迭代的通过调用iter()方法就能得到一个迭代器 迭代器的特点: 很方便使用,且只能取所有的数据取一次 节省内存空间 for 循环其实就是在使用迭代器 判断是不是迭代器,其实是为了使用for循环 当我们遇到一个新的变量,不确定能不能for循环时,就判断它是否可迭代 生成器 生成器的表现形式 1. 生成器函数 2. 生成器表达式 生成器函数: 含有yield关键字的函数就是生成器函数 特点: 调用函数之后函数不执行,返回一个生成器 调用next方法的时候会取到一个值 直到取完最后一个,再执行next会报错 从生成器中取值的几个方法 1. next 2. for 3. 数据类型的强制转换:占用内存 关于send() 其实next()和send()在一定意义上作用是相似的 区别是send()可以传递yield表达式的值进去,而next()不能传递特定的值,只能传递None进去 因此,我们可以看做c.next() 和 c.send(None) 作用是一样的