py04_06:生成器

 生成器的工作原理

 

如果再次调用函数时。代码是从yield的位置继续往下执行。而不是从函数本身。

# 生成器一个特殊的迭代器,他没有__iter__ , __next__两个方法,但通过yield,同样实现了迭代器的功能,所以说生成器是一个特殊的迭代器
def create_num(all_count):
    print('1'.center(50, '-'))
    a, b = 0, 1
    count = 0
    while count < all_count:
        print('2'.center(50, '-'))
        yield a
        print('分割线'.center(50, '-'))
        a, b = b, a + b
        count += 1
        print('4'.center(50, '-'))


t1 = create_num(10)  # 生成迭代器的对象

result = next(t1)
print(result)

result = next(t1)
上图代码

 

 调用生成器的两种方法

 

# 利用yield的特性,来回切换执行两个函数,达到多任务的效果

import time  


def task01():
    while True:
        print('1')
        time.sleep(0.1)
        yield


def task02():
    while True:
        print('2')
        time.sleep(0.1)
        yield


def main():
    t1 = task01()
    t2 = task02()
    while True:
        next(t1)
        next(t2)


if __name__ == '__main__':
    main()

 

posted on 2020-03-29 07:29  yeyu1314  阅读(91)  评论(0编辑  收藏  举报