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 ...
随机推荐
- Spring jdbcTemplate + EasyUI 物理分页
前文说到,新项目中,用到的是SpringMVC + jdbcTemplate,前台是EasyUI,发现同事以前封装分页是逻辑分页,于是,自己动手封装了下物理分页. 这个是核心分页实体: import ...
- FileInputStream(字节流)与fileReader(字符流) 的区别
FileInputStream 类 1 ) FileInputStream 类介绍: 以字节为单位的流处理.字节序列:二进制数据.与编码无关,不存在乱码问题. FileInputStream 类的主要 ...
- Mysql笔记之 -- replace()实现mysql 替换字符串
mysql 替换函数replace()实现mysql 替换字符串 mysql 替换字符串的实现方法: mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数 ...
- Core第三方开源Web框架
NET Core第三方开源Web框架YOYOFx YOYOFx框架 YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台. 本着学习的态度,造了这个 ...
- Spring 上下文
Spring 上下文WebApplicationContext.是服务器启动的时候加载ContextLoaderListener 的时候存在 ServletContext 中 servletConte ...
- How do I pull a native DOM element from a jQuery object? | jQuery Learning Center
How do I pull a native DOM element from a jQuery object? | jQuery Learning Center How do I pull a na ...
- iOS 面试题:OC基本概念题
1.什么是类和对象? 类是一组具有同样特征和功能的事物的抽象 对象描写叙述了一个物体的特征和行为实现 类是对象的抽象 对象是类的实例 2.OC中定义类,创建对象,使用对象. OC中定义类分为接口部分, ...
- OOP中的多态
尽管一直在说OOP,但说实话还不是真正的理解,面向对象的三个基本特性继承.封装.多态,前两个性质曾经 有接触听的比較多还好理解,以下主要介绍一下第三个特性--多态. 1. 定义 同一操作作用于 ...
- 原生js下拉刷新
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- iOS实践04
第四天 微博数据展示:获取服务器数据,json数据的解析,MVC的使用,自定义cell高度的计算,一些分类的设计.已经是第四天了,虽然每天都有课程,但这个东西也基本完成了一大半吧,一些忘掉的知识也捡起 ...