python--生成器

生成器:根据程序员指定的算法规则循环生成数据,当条件不成立时生成数据就结束,提示:不是一次性把所有数据全部生成出来
而是使用一次生成一次,这样可以节省大量的内存空间。

1. 生成器推导式,把列表推导式中的中括号改成小括号即可

# 创建了生成器
my_generator = (value * 2 for value in range(3))
print(my_generator)

# 生成器取值使用next函数获取生成器中的下一个值
# value = next(my_generator)
# print(value)
# value = next(my_generator)
# print(value)
# value = next(my_generator)
# print(value)
# 当生成器已经没有值时,会抛出StopIteration,表示生成器生成数据完毕
# value = next(my_generator)
# print(value)
#
# while True:
#     try:
#         value = next(my_generator)
#         print(value)
#     except Exception as e:
#         break # 跳出循环表示取值完成

# for循环内部循环调用next函数获取生成器中的下一值,当出现异常for循环内部自动进行了异常捕获。
for value in my_generator:
    print(value)

#2. yield关键字,只要在函数里面看到有yield那么这个函数可以任务是一个生成器

# 在函数里面看到有yield关键字,那么这个函数就是生成器了
def my_generator():
    for i in range(3):
        print("开始生成数据啦...")
        # 当程序执行到yield关键字的时候代码暂停并把结果返回,再次启动生成器的时候会在暂停的位置继续往下执行
        yield i
        print("上一次的数据生成完了...")


result = my_generator()
print(result)

# 获取生成器下一个值

value = next(result)
print(value)

# 生成器把所有数据生成完毕后,再次其它生成器会抛出一个StopIteration异常
for value in result:
    print(value)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值