Table of Contents
就是可以容纳元素,数据的
可迭代对象iterable
能被for循环的对象,有__iter__的对象,可以返回迭代器对象
迭代器对象
有__next__方法的对象
能够被for循环的条件
__iter__,__next__
不用for循环,拿到字典的所有元素
做出一个迭代器
迭代器的作用
做一种数据结构,就应该做一个迭代器
yield
yield 前面是一段代码,后面是一段代码,区分开
前面的代码放在__next__中,yield后面跟着的就是返回值
遍历可迭代用While
迭代器的内部怎么实现
object = __iter__()
while True: try object.__next__() execp: break
生成器generator
能够动态(循环一次计算一次返回一次)提供数据的可迭代对象。
作用,动态生成数据,可以节省空间
也称为惰性操作,用的时候才生成
生成器函数
含有yield语句的函数,返回值为生成器对象
and和or的复习
and为假就停止运行,返回结果
从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。
or为真就停止运行,返回结果
从左到右扫描,返回第一个为真的表达式值,无真值则返回最后一个表达式值。
大于,小于,区分
1<5:就是1,2,3,4,默认比大于,小于的数减一
什么时候使用yield
需要返回多个对象,需要多次执行
yIeld的过程
含有yield语句的函数,返回值为生成器对象
(1)调用生成器函数会自动创建迭代器对象。
(2)调用迭代器对象的__next__()方法时才执行生成器函数。
(3)每次执行到yield语句时返回数据,暂时离开。
(4)待下次调用__next__()方法时继续从离开处继续执行。
for x in list的执行原理
先调用__iter__函数返回迭代器
调用迭代器的__next__函数一次次返回对象
重写str和repr中最重要的是?
一定要返回字符串,用return
print(函数())
输出的是函数的地址
变量的坑
如果变量后面多了一个逗号,就默认视变量为元组