Python生成器有什么用_yield关键字详解【技巧】

admin 百科 11
Python生成器的核心作用是按需生成数据,节省内存。它通过yield暂停执行并返回值,保留状态供下次继续,适合大数据流、无限序列等场景,比列表推导式更省内存且无需手动实现迭代器协议。

Python生成器有什么用_yield关键字详解【技巧】-第1张图片-佛山资讯网

Python生成器的核心作用是**按需生成数据,节省内存**。它不一次性把所有结果存进内存,而是每次调用时才计算并返回一个值,特别适合处理大数据流、无限序列或资源受限的场景。

生成器比列表更省内存

比如要生成100万个数字的平方,用列表需要一次性分配内存存储全部结果:

squares_list = [x**2 for x in range(1000000)] # 占用数百MB内存

而用生成器函数,只保存当前状态,几乎不占额外内存:

def squares_gen():
    for x in range(1000000):
        yield x**2

gen = squares_gen() # 此时没算任何值,内存占用极小
  • 调用 next(gen) 才算第一个数(0²=0)
  • 再调用一次算第二个(1²=1),依此类推
  • 中间状态(如当前 x 值)由 Python 自动保存在生成器对象中

yield 是暂停与交出控制权的关键

yield 不是 return:函数遇到 yield 会暂停执行,把值“交出来”,但保留全部局部变量和执行位置;下次继续从 yield 下一行开始。

标签: python 大数据 爬虫 内存占用

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~