多任务-协程之生成器

1.生成器的概念

利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(generator)。生成器是一类特殊的迭代器。

2.生成器的创建方法

(1)直接法

G = ( x*2 for x in range(5))

采用这种方法来创建生成器,可以在shell命令窗口直接查看G的属性

(2)使用yield的函数

  • 使用了yield关键字的函数不再是函数,而是生成器。(使用了yield的函数就是生成器)
  • yield关键字有两点作用:
    • 保存当前运行状态(断点),然后暂停执行,即将生成器(函数)挂起
    • 将yield关键字后面表达式的值作为返回值返回,此时可以理解为起到了return的作用
  • 可以使用next()函数让生成器从断点处继续执行,即唤醒生成器(函数)
  • Python3中的生成器可以使用return返回最终运行的返回值,而Python2中的生成器不允许使用return返回一个返回值(即可以使用return从生成器中退出,但return后不能有任何表达式)。

(3)send()函数同样可以起到唤醒的作用

大致的功能和next()的作用相似,但是send()可以在括号内填写一个可供输出的参数

posted @ 2018-07-27 09:49  zxh_python  阅读(162)  评论(0编辑  收藏  举报