Python 中的生成器

Python 中的生成器

从现在开始,对 Python 的讲解慢慢进入深水区,有什么不理解的,可以在评论区留言询问。

在 Python 中,生成器是一种生成迭代器的方便的方法,可以通过实现生成器函数实现的。生成器函数和普通函数类似,唯一的不同点是,生成器函数使用 yield 语句返回,而不是 return 语句。生成器函数中也可以包含 return 语句,但是 return 语句不是用来返回迭代器的。

根据定义,如果一个函数中至少有一个 yield 语句,那么它就是一个生成函数。使用 yield 语句的主要区别在于,它会暂停函数并保存其内部状态,当下次调用函数时,它会从上次 yield 的行开始。这种设计模式使迭代器功能变得简单而高效。

在内部,__iter____next__ 等方法是自动实现的,StopIteration 异常也是自动引发的。本地属性及其值在连续调用之间被保留,开发者无需执行额外的逻辑。每当 Python 解释器识别到一个生成器函数(包含 yield 语句的函数)时,它就会提供所有这些功能。

为了了解生成器的工作原理,我们将从一个简单的生成器示例开始,该示例用于生成字母表前三个字母的序列:

def 天干迭代器的生成器():
    yield '甲'
    yield '乙'
    yield '丙'
    yield '丁'
    yield '戊'
    yield '己'
    yield '庚'
    yield '辛'
    yield '壬'
    yield '癸'

if __name__ == '__main__':
    iter1 = 天干迭代器的生成器()
    iter2 = 天干迭代器的生成器()
    print(iter1.__next__())
    print(next(iter1))
    print(iter2.__next__())
    print(next(iter2))

在这个例子中,我们使用 yield 语句实现了一个生成器。在主程序中,我们做了以下事情:

  1. 调用 天干迭代器的生成器 函数,获取了两个迭代器,iter1iter2
  2. 对于两个迭代器,调用它的 __next__ 方法,输出一个天干;
  3. 在两个迭代器上调用 next函数,输出下一个天干。

以上代码的输出结果是:

甲
乙
甲
乙

接下来,我们修订 星期类 类,不再单独定义一个迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dowhileprogramming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值