zoukankan      html  css  js  c++  java
  • Python 生成器

    来源:菜鸟教程

    在 Python 中,使用了 yield 的函数被称为生成器(generator)。

    跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行

    调用一个生成器函数,返回的是一个迭代器对象。

    以下实例使用 yield 实现斐波那契数列:

    import sys
    
    def fibonacci(n):  # 生成器函数 - 斐波那契
        a, b, counter = 0, 1, 0
        while True:
            if (counter > n):
                return
            yield a
            a, b = b, a + b
            counter += 1
    
    
    f = fibonacci(10)  # f 是一个迭代器,由生成器返回生成
    while True:
        try:
            print(next(f), end=" ")
        except StopIteration:
            sys.exit()

    输出结果:0 1 1 2 3 5 8 13 21 34 55

    对以上示例分析,第一次next(f)以后,此时迭代器的值为id(a)

    import sys
    
    def fibonacci(n):  # 生成器函数 - 斐波那契
        a, b, counter = 0, 1, 0
        while True:
            if (counter > n):
                return
            yield a
            print(id(a))
            print(id(a))
            a, b = b, a + b
            counter += 1
    
    
    f = fibonacci(10)  # f 是一个迭代器,由生成器返回生成
    print(id(next(f)))
    print(next(f))

    输出结果如下,发现id(next(f)) == id(a)

    1424059840
    1424059840
    1
  • 相关阅读:
    团队冲刺第八天
    团队冲刺第七天
    团队冲刺第六天
    团队冲刺第五天
    找水王
    团队冲刺第四天
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
    spring冲刺计划
  • 原文地址:https://www.cnblogs.com/fuqia/p/8955402.html
Copyright © 2011-2022 走看看