生成器

作者: 程序设计法师 | 来源:发表于2019-04-04 16:12 被阅读0次
# 打印斐波那契数列
def create_num(all_num):
    a, b = 0, 1
    current_num = 0
    while current_num < all_num:
        # print(a)
        # 生成器,如果一个函数中有yield,那么这个函数就不再是函数,就是一个生成器模板
        yield a
        a, b = b, a + b
        current_num += 1


# 如果在调用create_num的时候,发现这个函数中有yield那么此时,不是调用函数,而是创建一个生成器
obj = create_num(10)
ret = next(obj)
print(ret)
ret = next(obj)
print(ret)
# 生成器是一种特殊的迭代器
for num in obj:
    # print(num)
    pass
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/协程/生成器.py
0
1

Process finished with exit code 0
使用send方式
# 打印斐波那契数列
def create_num(all_num):
    a, b = 0, 1
    current_num = 0
    while current_num < all_num:
        # print(a)
        # 生成器,如果一个函数中有yield,那么这个函数就不再是函数,就是一个生成器模板
        ret=yield a
        print("yield接收send的值:",ret)
        a, b = b, a + b
        current_num += 1


# 如果在调用create_num的时候,发现这个函数中有yield那么此时,不是调用函数,而是创建一个生成器
obj = create_num(10)
ret = next(obj)
print(ret)
# 可以传参数
ret = obj.send("sssss")
print(ret)
# 生成器是一种特殊的迭代器
# for num in obj:
    # print(num)
    # pass
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/协程/生成器.py
0
yield接收send的值: sssss
1

Process finished with exit code 0
使用yield 完成多任务
import time


def task_1():
    while True:
        print("task1")
        time.sleep(1)
        yield


def task_2():
    while True:
        print("task2")
        time.sleep(1)
        yield


def main():
    t1 = task_1()
    t2 = task_2()
    while True:
        next(t1)
        next(t2)


if __name__ == "__main__":
    main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/协程/使用yield完成多任务.py
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2
task1
task2

Process finished with exit code -1

相关文章

  • 15.生成器generator

    目录:1.生成器介绍2.生成器举例3.生成器应用 1.生成器介绍 生成器指的是生成器对象,可以由生成器表达式得到,...

  • 2018-07-16

    ## 1\. 生成器和生成器函数 ``` 生成器的本质就是迭代器 生成器的三种创建办法: 1.通过生成器函数 ...

  • 第014篇:三大神器之生成器

    Python的三大神器:装饰器、迭代器、生成器 1、生成器 1.1、什么是生成器 生成器就是迭代器的一种;生成器作...

  • Python 生成器函数

    一、生成器 生成器指的是生成器对象,可由生成器表达式得到,也可使用 yield 关键字得到一个生成器函数,调用这个...

  • tornado协程的工作原理

    包含yield语句的函数是一个生成器。所有的生成器都是异步的。当我们调用生成器函数的时候,生成器函数返回一个生成器...

  • python 生成器小结

    作者:邵正将 来源:PytLab 在python中生成器可以很方便的实现迭代协议。生成器通过生成器函数产生,生成器...

  • ES6 Generators

    生成器函数 生成器函数以function*标注 yield关键字,会暂停生成器的执行,在之后可以继续执行 生成器的...

  • ES6 生成器Generator

    生成器 生成器(Generators): 一个更好的方法来构建遍历器。 --- 生成器和迭代器 生成器就是一类...

  • 生成器

    生成器指的是生成器对象,可以有生成器表达式获得,也可以由yield关键字得到一个生成器,调用这个函数得到一个生成器...

  • Python 入门之 Python三大器 之 生成器

    Python 入门之 Python三大器 之 生成器 1、生成器 (1)什么是生成器? 核心:生成器的本质就是一个...

网友评论

      本文标题:生成器

      本文链接:https://www.haomeiwen.com/subject/gvkqiqtx.html