生成器(generator,yield),next,send
#生成器
def generator():
for i in range(200):
yield '哇哈哈%s' %i
g = generator() #调用生成数函数,接受作用
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)

def generator():
for i in range(200):
yield '哇哈哈%s' %i
g = generator() #调用生成数函数,接受作用
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)
num = 0
for i in g:
num += 1
if num > 10:
break
print(i)

生成器的作用:一条一条输出,输出一个获取一个,不像return,输出后就马上返回,不能执行后面的函数。
!!!send 获取下一个值的效果和next基本一致,但是获取下一个值时,要给上一个yield的位置传递一个数据。
!!!第一次使用生成器时,是用next获取下一个值,最后一个yield不能接受外部的值
#next send
def generator():
print(123)
content = yield 1
print('======',content)
print(456)
yield 2
g = generator() #调用生成数函数,接受作用
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print('***',ret)
ret = g.send('hello') #send的效果和next一样
print('***',ret)

最后一个yield如果想使用的话,解决办法如下:
def generator():
print(123)
content = yield 1
print('======',content)
print(456)
arg = yield 2
''''''
yield
生成器(generator,yield),next,send的更多相关文章
- python生成器中yield和send分析
生成器 在python中生成器是指用代码实现迭代器的的功能本质还是迭代器,只不过是代码实现迭代器功能.在python中生成器是由函数实现的,通常我们在函数中加入yeild就可以实现生成器. 生成器中y ...
- 【转】 Python生成器generator之next和send运行流程
原文链接:https://blog.csdn.net/pfm685757/article/details/49924099 对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一 ...
- Python复习之生成器 generator
生成器 generator def h(): print "hello" m = yield 5 print "m:", m d = yield 12 prin ...
- 生成器(generator)内部解析
#http://kb.cnblogs.com/page/87128/(未看完)
- 【Python】迭代器、生成器、yield单线程异步并发实现详解
转自http://blog.itpub.net/29018063/viewspace-2079767 大家在学习python开发时可能经常对迭代器.生成器.yield关键字用法有所疑惑,在这篇文章将从 ...
- 生成器generator
生成器generator 定义:一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器 代码: def cash_out(a ...
- Python生成器与yield
列表推导与生成器表达式 当我们创建了一个列表的时候,就创建了一个可以迭代的对象: >>> squares=[n*n for n in range(3)] >>> f ...
- python迭代器与生成器及yield
一.迭代器(itertor) 1.可迭代: 在Python中如果一个对象有__iter__()方法或__getitem__()方法,则称这个对象是可迭代的(iterable). 其中__iter__( ...
- 003_生成器(generator)内部解析
#http://kb.cnblogs.com/page/87128/(未看完)
随机推荐
- [P5172] Sum
"类欧几里得算法"第一题 sum [题意] 给入\(n,r\),求\(\sum_{d=1}^n(-1)^{\lfloor d\sqrt r \rfloor}\). [分析] 只需要 ...
- Net Core集成Exceptionless分布式日志功能以及全局异常过滤
Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集 ...
- visual Studio 2017 扩展开发(二)《菜单图标详解》
在上一篇我们在菜单栏创建了一个菜单,菜单上显示了一个图标跟文本.那么我们自己创建的菜单如何修改自定义的菜单图标呢.下面娓娓道来..... 首先你要有一个图,创建一个32位的位图.这个位图的像素是16p ...
- (转载)CPU、内存、硬盘、指令以及他们之间的关系
CPU.内存.硬盘.指令以及他们之间的关系 最近读完<程序是怎样跑起来的>以及<深入理解计算机系统>的3.6.9章节后对计算机的组成有了更深入细致的了解,现总结一下对CPU.内 ...
- Android--通过Application传递数据
在整个Android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用.在Activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过J2EE的都应该知道Java ...
- Chapter 4 Invitations——1
In my dream it was very dark, and what dim light there was seemed to be radiating from Edward's skin ...
- Apache-Flink深度解析-JOIN 算子
什么是JOIN 在<Apache Flink 漫谈系列 - SQL概览>中我对JOIN算子有过简单的介绍,这里我们以具体实例的方式让大家对JOIN算子加深印象.JOIN的本质是分别从N(N ...
- solr(五): centos中, 整合 tomcat&solr
前言 虽然windows下, tomcat和solr整合起来灰常的方便, 但是, 一般像这种东西, 都很少部署在windows中, 更多的是部署到linux中去. 其实, 步骤是一样的, 这里, 我在 ...
- man statd(rpc.statd中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.statd程序主要实现NFS锁相关内容,如普通的文件锁(NLM.NSM).文件 ...
- nginx支持跨域访问
1,进入nginx的html目录 vim ./crossdomain.xml 具体路径: /usr/local/nginx/html/crossdomain.xml 2,在crossdomain.xm ...