yiled 是个神奇的东西,但是他的基本概念好像还蛮简单的
小二,上代码:
def func(): for i in range(10): yield i*2 print("yaho~") func() print("????") for i in func(): print(i)
结果是:
???? 0 yaho~ 2 yaho~ 4 yaho~ 6 yaho~ 8 yaho~ 10 yaho~ 12 yaho~ 14 yaho~ 16 yaho~ 18 yaho~ [Finished in 0.2s]
很明显,使用了yiled之后,即使调用了func(),程序也没有执行,而是只有在迭代输出的时候,才执行,即,函数返回了一个迭代器。
所有只讲语言特性是什么,却不说为什么的人,都是耍流氓,
那么,问题来了,为什么要这么设计:
1,减少内存损耗,如果不返回迭代器,那么可能返回的就是列表,那么,随着数据增大,内存的开销是惊人的。yiled不仅解决了这个问题,而且还让开发更加简洁
2,