零基础学python-19.7 扩展生成器函数
2015-10-01 23:52
387 查看
这一章节我们来讨论一下扩展生成器函数: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基础5之错误处理
- 【Python之旅】第四篇(二):Python异常处理与异常捕捉
- 【Python之旅】第四篇(二):Python异常处理与异常捕捉
- 零基础学python-19.6 生成器函数应用
- 零基础学python-19.6 生成器函数应用
- Python贝叶斯算法进行文本主客观分析(采用文本双词模型)
- Python贝叶斯算法进行情感分析
- Python实现文件夹深度优先遍历
- Python利用遗传算法解决八皇后问题
- [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
- Python3.x和Python2.x的区别
- 《机器学习实战》笔记之十四——利用SVD简化数据
- 【Python之旅】第四篇(一):Python装饰器
- python3.4-小爬虫
- python学习之list
- Python核心编程笔记 - 第13章 面向对象编程(二)
- Python美女[从新手到高手]--阅读"见个面问题 HashMap 储存方法"联想
- Python核心编程笔记 - 第13章 面向对象编程 (一)
- Windows7 平台下Python+NLTK环境搭建
- python 中的 filter, lambda, map, reduce 内置函数