python下yield(生成器)
python下的协程:
#encoding=utf-8
"""
协程----微小的进程
yield生成器-----生成一个可迭代对象比如list, tuple,dir
1、包含yield的函数,则是一个可迭代对象(list, tuple等)
每次运行到yield即结束,并保留现场
2、生产者、消费者行为; 3、无需立即执行,需要时才执行
""" a = [1, 2, 3, 4]
for i in a:
print i def test():
i = 0
a = 4
while i < a:
"""
0
1
2
3
"""
x = yield i
i += 1 t = test()
print t #<generator object test at 0x0000000002541798>
print t.next() #生成器的next()
print t.next() #生成器的next()
print t.next() #生成器的next()
print t.next() #生成器的next()
#print t.next() #StopIteration print type(range(0, 5)) #<type 'list'>
print type(xrange(0, 5)) #<type 'xrange'> def test2():
x = yield "first, and return"
print "first %s"%x
x = yield "second and return%s"%x
print "second %s"%x
x = yield
print x #None,没有send t = test2()
print t.next()
print t.send("try again") #使用send()则x的值为send的参数,未使用send则x为空
print t.send("the second args") # 1 1 2 3 5 8 13
print "=================="
def test3(num):
if num == 1:
yield num
i = 1
b = 1
while i < num:
x = yield i i = b + i for i in test3(13):
print i """
求100000之后的100个质数, 使用yield
"""
def is_p(t_int):
if t_int > 1:
for i in xrange(2, t_int):
if t_int%i == 0:
return False
return True
else:
return False def get_primes():
i = 10000
while True:
if is_p(i):
#x = yield i
yield i
i +=1
i += 1 t = get_primes()
for i in xrange(0, 100):
print t.next()
python下yield(生成器)的更多相关文章
- Python基础 (yield生成器)
如果在一个函数中使用了yield,那么这个函数实际上生成的是一个生成器函数 ,返回的是一个generator object.生成器是实现迭代的一种方式 特点: 其实返回的就是可以的迭代对象 和迭代的方 ...
- Python爬虫与数据分析之进阶教程:文件操作、lambda表达式、递归、yield生成器
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- Python中的yield生成器的简单介绍
Python yield 使用浅析(整理自:廖 雪峰, 软件工程师, HP 2012 年 11 月 22 日 ) 初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关 ...
- Python yield 生成器
yield:生成器 任何使用yield的函数都称之为生成器,如: def count(n): : yield n #生成值:n 另外一种说法:生成器就是一个返回迭代器的函数,与普通函数的区别是生成 ...
- python高级之生成器&迭代器
python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...
- 【python】迭代器&生成器
源Link:http://www.cnblogs.com/huxi/archive/2011/07/01/2095931.html 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素 ...
- 深入理解python的yield和generator
原文发表在我的博客主页,转载请注明出处 前言 没有用过的东西,没有深刻理解的东西很难说自己会,而且被别人一问必然破绽百出.虽然之前有接触过python协程的概念,但是只是走马观花,这两天的一次交谈中, ...
- 第三篇:python高级之生成器&迭代器
python高级之生成器&迭代器 python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...
随机推荐
- 64bits Python2.7.5安装numpy包
由于数值分析需要numpy计算包,我找了很多numpy-cp27的下载地址,下了最新版的.whl文件,但总是安装不成功,后来找到一个.exe文件 直接下载安装即可使用:下面是网址链接http://do ...
- 树莓派高级GPIO库,wiringpi2 for python使用笔记(二)高精度计时、延时函数
学过单片机的同学应该清楚,我们在编写传感器驱动时,需要用到高精度的定时器.延时等功能,wiringpi提供了一组函数来实现这些功能,这些函数分别是: micros() #返回当前的微秒数,这个数在调用 ...
- poj 2689 大范围内素数筛选
/** 给定一定范围求其内的素数 注意: **/ #include <iostream> #include <math.h> #include <cstring> ...
- qwtplot3D安装——终结解决方案(YOUYOU版)
转自CSDN: 首先不得不说,要感谢北京邮电大学的阿科.感谢他慷慨的分享和极具科学态度的记录,将自己搜集到的众多资料收集整理发布,拯救众多苦逼寻找方案的程序员于苦海之中.因为最近接手新的项目,涉及到使 ...
- 只有小于65535端口编程可以用,查看哪些端口被打开netstat -anp,nc命令,nmap命令
1024以下是系统保留的,从1024-65535是用户使用的 个人写的应用程序,尽量不要使用0到1024之间的端口号. 1024到65535我们编程可以用.这个不是Linux规定的,是socket规定 ...
- 第25周五迷茫定位&转行理论建议
今天下午请假办了无房证明和单身证明,准备开始贷款买房的征程,在犹豫纠结中我选择推进这个事情,之前的经验告诉我生活中可以面临改变或不改变境况的选择是要尽可能的选择改变,因为我还年轻.回来后知乎上看了一个 ...
- HTML5 RPG游戏示例
演示地址 点击打开链接
- 套接字socket 的地址族和类型、工作原理、创建过程
注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...
- Android设置Activity背景为透明style
方法一: 通过Theme.Translucent @android:style/Theme.Translucent @android:style/Theme.Translucent.NoTitleBa ...
- TCP各种连接状态注释
TCP各种连接状态注释 连接进程是通过一系列状态表示的,这些状态有:LISTEN,SYN-SENT,SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CL ...