python之生成器

时间:2019-11-14
本文章向大家介绍python之生成器,主要包括python之生成器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.什么是生成器

- 生成的工具
- 生成器可以理解为一个”自定义“的迭代器。

2.如何实现生成器

# 但凡在函数内部使用yield,调用该函数时,函数体代码不会执行。
# 而是返回一个生成器。
def func1():
    print(1)
    yield 2
    
func1() # 此时未执行,无输出
res = func1()
print(res)  # 输出为generator生成器对象。
res.__next__() # 输出为(1)

yield:

  • 每次执行到yield都会往生成器对象中添加一个值。
  • 只能在函数内部定义。
  • yield可以保存函数的暂停状态。

return:

  • 函数遇到return将直接结束并返回。

自定义迭代器:

def func():
    print('准备下蛋')
    print('1---1号蛋')
    yield '1号蛋'
    print('2---2号蛋')
    yield '2号蛋'
    print('3---3号蛋')
    yield '3号蛋'
    print('结束下蛋')
    
res = func() #
res.__next__()
res.__next__()
res.__next__()

上述例子可发现:每次调用__next__方法时,程序会执行到下一个yield位置并暂停,直到下一次调用。

def my_range(start, end, move=1):  # 简单的range实现
    while start < end:
        yield start
        start += move

原文地址:https://www.cnblogs.com/Ghostant/p/11857413.html