一,生成器函数。
当函数中包含特殊字符,yield 的时候, 这个函数就是一个特殊的函数------生成器函数。
1. 函数(),并不开始执行函数,只是表示获取到了一个生成器。
2. 只有调用生成器的__next__()方法的时候,才开始执行生成器函数中的内容。
3. 调用第一个 __next__()方法的时候,只是执行到第一个 yield 为止。
下一个__next__()方法,从这个yield 之后的内容开始执行。并且到第二个 yield 为止。
4. yield 后面的是函数执行__next__() 当前方法的返回值。
生成器函数会返回yield后面的返回值,并记录当前__next__()方法运行到的位置。作为下一个__next__()方法的起始位置。
# !/usr/bin/env python # -*- coding:utf8 -*- """ 当函数中包含特殊字符,yield 的时候, 这个函数就是一个特殊的函数------生成器函数。 1. 函数(),并不开始执行函数,只是表示获取到了一个生成器。 2. 只有调用生成器的__next__()方法的时候,才开始执行生成器函数中的内容。 3. 调用第一个 __next__()方法的时候,只是执行到第一个 yield 为止。 下一个__next__()方法,从这个yield 之后的内容开始执行。并且到第二个 yield 为止。 4. yield 后面的是函数执行__next__() 当前方法的返回值。 """ # 定义一个函数 def func1(): print(11) yield 1 print(22) yield 2 print(33) yield 3 # 仅仅获取到了一个生成器函数,并不开始执行函数 result = func1() # result 只是生成器的一个实例化的对象 print(result) ret = result.__next__() # 调用__next__(),函数开始执行,并且到第一个 yield 为止。 print(ret) # 查看一下生成器的当前的返回值 ret2 = result.__next__() # 再次调用__next__(),函数从上次yield后面的内容开始执行,并且到下一个 yield 为止。 print(ret2) # 再次查看一下生成器的当前的返回值