补充一个知识点:
生成器的创建方式有两种
(1)生成器推导式
列表推导式的 【】改成()就成了生成器
而不是元组推导式
想要用推导式得到一个元组,需要用 tuple() 将推导式得到的生成器转化成元组
ge=(i for i in range(9))
print(ge)
print(type(ge))
>>> <generator object <genexpr> at 0x000002A00A1E42E0>
>>> <class 'generator'>
此时,print(ge)打印出来的是个生成器对象,而不是具体内容
(2)使用yield关键字
找了一大串文章,看的眼花缭乱,也没看懂 自己写理解吧
1.使用yield的函数就不是函数了 是一个生成器generator
生成器内置有一个__next__(即next()函数),这个是精髓
即 看到yield——系统识别这是一个生成器,不是函数——给这个生成器内置一个next(),给其他对象调用
2.所以调用带yield的所谓函数时,其实就是调用了生成器
3.调用生成器返回的是一个可迭代对象
4.命令调用生成器的时候,只是把这个生成器拿出来准备使用,但并