Advertisement

用简单的实例解释yield的执行方式

阅读量:

一. yield 的基本概念

yield 负责将函数转换为生成器函数;具体来说,在具有 yield 关键词的函数中会返回一种称为 generator 的特殊对象

复制代码
 # 普通函数

    
 def func_1():
    
     return 1
    
  
    
 # 含 yield 的生成器函数
    
 def func_2():
    
     yield 1
    
  
    
 print(type(func_1()))  # 返回相应的数据对象 <class 'int'>
    
 print(type(func_2()))  # 返回生成器对象     <class 'generator'>

调用生成器函数时,生成器函数不会完全地执行整个函数的代码;当遇到yield指令并返回迭代值后,会立即中断运行.

当生成器函数在下一次迭代期间被调用时,在上一次yield后的下一条指令将开始运行;此时生成器函数内的局部变量状态与上一次中断时完全一致。

因此,在使用生成器函数时会采用按中断机制运行的方式,在被激活的不同函数之间会动态地进行交互;该生成器函数在本次被激活后所编写的后续代码部分,则需要等到下一次激活开始时才会继续运行;而只有在当前操作完成并结束之后才会由系统自动执行相关的后续代码

全部评论 (0)

还没有任何评论哟~