iterable对象 yeield
发布日期:2021-06-29 11:44:26 浏览次数:2 分类:技术文章

本文共 690 字,大约阅读时间需要 2 分钟。

详情参考

range 和 xrange

for i in range(1000): pass    会导致生成一个 1000 个元素的 List

for i in xrange(1000): pass   则不会生成一个 1000 个元素的 List,而是在每次迭代中返回下一个数值,内存空间占用很小。因为 xrange 不返回 List,而是返回一个 iterable 对象。

在Python3中取消了xrange,python3的range就是xrange。python2中,range的返回值是list,这意味着内存将会分布相应的长度的空间给list;python3中返回的是一个对象,并没有将数据完全实例化,所以内存中只有一个对象的空间,对性能优化有帮助。

yield

yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。也可以手动调用 fab(5) 的 next() 方法(因为 fab(5) 是一个 generator 对象,该对象具有 next() 方法),这样我们就可以更清楚地看到 fab 的执行流程.

转载地址:https://blog.csdn.net/zz2230633069/article/details/82253116 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:一些实用的快捷键
下一篇:random.shuffle(lst)和numpy.random.shuffle(lst)

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月08日 17时29分42秒