资讯专栏INFORMATION COLUMN

Python:Tornado 第一章:异步及协程基础:第二节:Python关键字yield

reclay / 1597人阅读

摘要:在种,使用关键字定义的迭代器也被称为生成器迭代器迭代器是访问集合内元素的一种方式。调用任何定义包含关键字的函数都不会执行该函数,而是会获得一个队应于该函数的迭代器。

上一篇文章:Python:Tornado 第一章:异步及协程基础:第一节:同步与异步I/O
下一篇文章:Python:Tornado 第一章:异步及协程基础:第三节:协程

协程是Tornado中进行异步I/O代码开发的方法。协程使用了Python关键字yield将调用者挂起和恢复执行。所以在学习协程之前,我们先熟悉一下yield的概念和使用方法,而要想理解yield,需要先理解迭代器的概念。

在Python种,使用yield 关键字定义的迭代器也被称为【生成器】
1、迭代器
迭代器(Iterator)是访问集合内元素的一种方式。迭代器对象从集合的第1个元素开始访问,直到所有元素都被访问一遍后结束。迭代器不能后退,只能前进迭代。

Python种最常用迭代器的场景是循环语句for,它用迭代器封装集合,并且煮个访问集合元素以执行循环。

例如:

for number in range(5):#range返回一个列表
    print(number)

其中的range()返回一个包含所指定元素的集合,而for语句将其封装成一个迭代器后访问,使用iter()可以讲列表、集合转换成迭代器,例如:

numbers=[1,2,3,4,5]
#t就是迭代器
t=iter(numbers)
#打印t对象,以便查看其类型
print(t)

返回结果:

迭代器与普通Python对象相比,多了一个__next__()方法,每次调用该方法可以返回一个元素,调用者(例如for语句)可以通过不断调用__next__()方法来煮个访问集合元素。

例如:

numbers=[1,2,3,4,5]
#t就是迭代器
t=iter(numbers)
#打印t对象,以便查看其类型
print(t.__next__())
print(t.__next__())
print(t.__next__())
print(t.__next__())

返回结果:

1
2
3
4

调用者可以一直调用__next__()方法,直到返回StopIteration异常。

2、使用yield
迭代器在Python编程种的使用范围很广,那么开发者如何定制自己的迭代器呢?

答案是使用yield关键字。

调用任何定义包含yield关键字的函数都不会执行该函数,而是会获得一个队应于该函数的迭代器。

实例:

import time
def demoIternator():
    print("---1---")
    yield 1
    print("---2---")
    yield 2
    print("---3---")
    yield 3
    print("---4---")

for x in demoIternator():
    print(x)
    time.sleep(1)

结果

每次调用迭代器的__next__()方法,将执行迭代器函数,并返回yield的结果作为迭代返回元素。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42599.html

相关文章

  • PythonTornado 一章异步协程基础:第三节:协程

    摘要:上一篇文章第一章异步及协程基础第二节关键字下一篇文章第二章实战演练开发网站第一节网站结构使用协程可以开发出类似同步代码的异步行为。协程函数可以通过以下三张方式调用在本身是协程的函数内通过关键字调用。 上一篇文章:Python:Tornado 第一章:异步及协程基础:第二节:Python关键字yield下一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第...

    charles_paul 评论0 收藏0
  • PythonTornado 一章异步协程基础第一节:同步与异步I/O

    摘要:上一篇文章开篇下一篇文章第一章异步及协程基础第二节关键字协程是种推荐的编程方式,使用协程可以开发出简捷高效的异步处理代码。同步操作,导致进程阻塞,直到操作完成异步操作,不会导致请求进程阻塞。 上一篇文章:Python:Tornado 开篇下一篇文章:Python:Tornado 第一章:异步及协程基础:第二节:Python关键字yield 协程是Tornado种推荐的编程方式,使用协...

    Anleb 评论0 收藏0
  • PythonTornado 第二章:实战演练:开发Tornado网站:第一节:网站结构:Hello

    摘要:上一篇文章第一章异步及协程基础第三节协程下一篇文章第二章实战演练开发网站第二节网站结构路由解析实例浏览器输入链接页面显示下面逐行解析上面的代码做了些什么首先通过语句引入包中的和类。该对象的第一个餐食用于定义程序的路由映射。 上一篇文章:Python:Tornado 第一章:异步及协程基础:第三节:协程下一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第...

    Taonce 评论0 收藏0
  • PythonTornado 开篇

    摘要:作为网站的基础框架,于年月日发布,目前已经获得了很多社区的支持,并且在一系列不同的场景种得到应用。使用该框架,开发者能够快速开发出即安全又强大的用户身份认证机制,例如机制用户身份认证防止跨站攻击等等。 下一篇文章:Python:Tornado 第一章:异步及协程基础:第一节:同步与异步I/O Tornado是一个可扩展的非阻塞Web服务器以及相关工具的总称。Tornado每秒可以处理...

    Anshiii 评论0 收藏0
  • PythonTornado 第二章:实战演练:开发Tornado网站:第六节:异步协程

    摘要:上一篇文章第二章实战演练开发网站第五节输出相应函数下一篇文章第二章实战演练开发网站第七节安全机制有两种方式可改变同步的处理流程异步化针对的处理函数使用修饰器,将默认的同步机制改为异步机制。使用异步对象处理耗时操作,比如本例的。 上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第五节:RequestHandler:输出相应函数下一篇文章:Python:...

    cod7ce 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<