python3 yield关键字简单使用

本文深入探讨Python中生成器的概念及其核心关键字yield的作用,通过具体实例对比生成器与传统列表生成方式,突出生成器在节省内存和提高效率方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yield简单介绍

yield <==> 生成器
包含yield语句的函数是一个生成器
生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
生成器是一个不断产生值的函数

如何改变文本的样式

强调文本 强调文本

简单实例

def gen(n):
    for i in range(n):
        yield i**2

        
for i in gen(5):
    print(i, ' ', end='')

生成器每调用一次在yield位置产生一个值,直到函数执行结束.

输出
0 1 4 9 16

为什么需要生成器?

实例

def gen(n):
    for i in range(n):
        yield i**2


def square(n):
    return [j**2 for j in range(n)]


for i in gen(5):
    print(i, ' ', end='')
print()
for i in square(5):
    print(i, ' ', end='')

输出结果
0 1 4 9 16
0 1 4 9 16

生成器gen(n)每次只使用一个存储单元,不断的更新;
与生成器相比square(n)函数则是把所有的数都存入列表中,等待使用;
当所需的对象很多时,如n=1M,100M或更大时,很明显生成器更加节省空间。

以上为个人理解,如有误请指正

优势

生成器相比一次列出所有内容的优势:
1.更节省存储空间
2.响应更迅速
3.使用更灵活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值