''' yield关键字: yield是Python中一个特殊的关键字。它就是生成器 迭代其实就是循环的概念: 1.可迭代对象:可以通过循环来实现操作的对象。 2.迭代器:属于可迭代对象,一次只能取一个值,一直取值到全部取完为止。(程序终结为止) 3.生成器:是特殊的迭代器,只能通过yield来声明。 yield关键字只能用在函数或者方法之中。 yield类似于return关键字。都属于返回数据。return调用函数终止运行。yield调用后, 一次只生成一个值,一直到值生成完位置。在运行期间,处于挂起状态,随时调用随时获取。 ''' # 可迭代对象 # s = 'poinkjehhsadfoian' # for i in s: # print(i) # 迭代器:readline()就是标准的迭代器的形态。 # 自定义的迭代器实现:只有可迭代对象 ,才可以转为迭代器 # print(type(s)) # for i in it: # print(i) # print(next(it)) # next()读取迭代器中的值,每次读取一个值,类似于file.readline().只能用于迭代器使用 # print(next(it)) # print(next(it)) # 生成器 # def func(): # for i in range(0, 10): # # return i #return调用后,函数终止运行,只会返回0 # yield i #yield执行一次后,处于挂起状态,后续调用时继续产生数据。一直到生成器结束。 # f = func() # 调用函数,获取生成器 # print(next(f)) # 基于next获取生成器返回值 # print(next(f)) # print(next(f)) # print(next(f)) ''' 基于yield猜想操作文件的源码: def readlines(): for line in file.readlines(): yield line ''' ''' 测试流程 1. 测试初始化 2. 执行测试 3. 测试收尾结束 ''' def func(): #测试前 print('函数中的测试初始化') data = '函数产生的测试数据' # 测试中 yield data #将测试数据提取,交由实际测试执行 # 测试后 print('函数中的测试结束') print('测试开始') # f = func() func() # print('测试执行中') # print(next(f)) # print('测试结束') # print(next(f))
标签:迭代,生成器,yield,next,关键字,测试,print From: https://www.cnblogs.com/mafei666/p/18593309