【Python】生成器(generator)、yield含义

本文详细介绍了Python中的生成器(Generator),包括如何创建、使用生成器,以及与普通函数的区别。通过实例展示了如何利用生成器生成斐波那契数列,并探讨了如何获取生成器最后return的返回值。此外,还提到了迭代器(Iterator)和可迭代对象(Iterable)的概念。
摘要由CSDN通过智能技术生成

如有问题欢迎指出!

定义

Python中生成器是迭代器(Iterator) 的一种,每次遇到 yield时函数会暂停并保存当前所有的运行信息,返回 yield 后的值, 并在下一次执行 next()方法时从当前位置继续运行。

列表一次生成一组值,占用内存空间;生成器一次只产生一个值,用多少,取多少。

创建生成器(Generator)

如何创建生成器?

  1. 将列表生成式的中括号[]改为小括号(),得到生成器表达式
  2. 定义一个包含yield关键字的函数——生成器函数,调用函数就是创建了一个生成器(generator)对象。

yield相当于return返回一个值,并且记住这个返回的位置保留当前信息,下次迭代时,代码从yield的下一条语句继续执行。

这里大家可以思考下将generator_2(n)中的yield改为return,每次调用函数的结果是什么。

# 列表生成式
list1 = [x*x for x in range(3)]
print(list1)
# 创建生成器
# 1.生成器表达式:列表生成式的中括号[]改为小括号()
generator1 = (x*x for x in range(3))
print(generator1)
# 2.函数中包含yield关键字,调用函数就是创建了一个生成器(generator)对象。
def generator_2(n):
    for x in range(n):
        yield x*x
generator2 =generator_2(3)
print(generator2)

Output:

[0, 1, 4]
<generator object <genexpr> at 0x000001F4C81E1AC0>
<generator object generator_2 at 0x000001F4C81E1DD0>

注意:调用生成器函数时generator2 =generator_2(3)只是创建了一个生成器,并不会执行函数里面的内容

获得生成器的值

  1. 重复调用next() 方法 ,直到捕获一个异常;
  2. 通过 for 循环对生成器进行迭代。

next()方法:next(generator)generator.__next__()

def generator_2(n):
    for x in range(n):
        yield x*x
generator2 =generator_2(3)
print(generator2)
print(next(generator2))
print(generator2.__next__())

Output:<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值