python学习笔记4.1-python高级之生成器
发布日期:2021-05-15 15:40:53 浏览次数:11 分类:精选文章

本文共 914 字,大约阅读时间需要 3 分钟。

生成器是一种在Python中用于创建迭代器的高级机制。通过在函数中使用yield关键字,可以将函数转换为生成器。生成器的特点是,每次遇到yield语句时,都会暂停执行,并返回相应的值,同时保留函数的状态,以便在下一次调用时继续执行。不仅生成器支持通过next()方法获取下一个值,生成器还可以通过send()方法向生成器传递参数,赋值给函数中声明的变量。

基本操作

生成器可以通过以下方式创建:

  • 在函数中使用for循环和yield语句。例如:
  • def func():    for i in range(10):        yield i
    1. 使用列表推导式创建生成器。例如:
    2. [i for i in range(10)]

      当使用生成器时,需要注意以下几点:

      • 初始化生成器时,调用函数而不是跨发函数名。例如:
        f = func()
      • 使用next()方法来获取生成器的下一个值。例如:
        f.next()
      • 当生成器执行完所有yield语句后,会抛出StopIteration异常。

      send方法

      生成器还支持send方法,可以向生成器传递参数进行处理。例如:

      def func():    n = 0    while True:        n = yield n

      默认情况下,调用next()方法时,n会被赋值为0。调用send()方法时,可以传递参数进去。例如:

      f.send(1)  # n会被赋值为1f.send(2)  # n会被赋值为2

      应用

      生成器的显著优势是有效支持内存有限的无限序列生成。例如:

      def get_primes(number):    while True:        if is_prime(number):            yield number        number += 1

      与传统的方法相比,生成器无需一次性构造整个列表,从而避免了内存限制问题。

      总结来说,生成器通过懒评估(lazy evaluation)机制,不同于一般函数调用,生成器在遇到yield关键字时会暂停并保存当前状态,等待下次调用继续执行。这种机制尤其适用于需要生成大量数据但又无法一次性加载的场景。

    上一篇:方差、协方差、协方差矩阵的概念及意义 的理解
    下一篇:python学习笔记3.4-函数装饰器

    发表评论

    最新留言

    逛到本站,mark一下
    [***.202.152.39]2025年05月01日 19时35分13秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章