零基础学python-19.7 扩展生成器函数
2015-10-21 00:00
344 查看
这一章节我们来讨论一下扩展生成器函数:send函数
回顾一下上一章节我们介绍yield的应用:
我们这一章节在next()和__next__()之外,再介绍一个函数send,他主要的作用就是跟生成器通信,并且返回计算结果
下面我先举例:
从上面的代码可以看见,使用send跟next的计算差不多,我们下面来分解一下send的步骤:
1.先把send里面的参数赋值给生成器函数yield x
2.然后再执行print(y)这一句
3.执行生成器函数
4.把控制器交还给函数
注意:第一句是不可以直接使用send,会报错
我们下面再举一个比较明显的例子:
从上面的代码可以看见,send里面的参数已经真个替代了yield x这个生成器,然后计算y=N+2,得出y的结果,然后再打印出来,接着执行生成器,最后交还控制器并记录函数状态
总结:这一章节讨论了生成器函数的方法send,并且解析send的执行步骤,还有介绍send需要注意的地方。
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
回顾一下上一章节我们介绍yield的应用:
>>> def test(): for x in range(3): yield x >>> x=test() >>> next(x) 0 >>> next(x) 1
我们这一章节在next()和__next__()之外,再介绍一个函数send,他主要的作用就是跟生成器通信,并且返回计算结果
下面我先举例:
>>> def test(): for x in range(4): y=yield x print(y) >>> test() <generator object test at 0x01E69A58> >>> a=test() >>> next(a) 0 >>> a.send (99) 99 1 >>> a.send (88) 88 2 >>> a.send (5) 5 3 >>> a.send (6) 6 Traceback (most recent call last): File "<pyshell#35>", line 1, in <module> a.send (6) StopIteration
从上面的代码可以看见,使用send跟next的计算差不多,我们下面来分解一下send的步骤:
1.先把send里面的参数赋值给生成器函数yield x
2.然后再执行print(y)这一句
3.执行生成器函数
4.把控制器交还给函数
注意:第一句是不可以直接使用send,会报错
>>> def test(): for x in range(4): y=(yield x)+2 >>> a=test() >>> a.send (5) Traceback (most recent call last): File "<pyshell#50>", line 1, in <module> a.send (5) TypeError: can't send non-None value to a just-started generator
我们下面再举一个比较明显的例子:
>>> def test(): for x in range(4): y=(yield x)+2 print(y) >>> a=test() >>> next(a) 0 >>> a.send (5) 7 1 >>> a.send (10) 12 2
从上面的代码可以看见,send里面的参数已经真个替代了yield x这个生成器,然后计算y=N+2,得出y的结果,然后再打印出来,接着执行生成器,最后交还控制器并记录函数状态
总结:这一章节讨论了生成器函数的方法send,并且解析send的执行步骤,还有介绍send需要注意的地方。
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法