python生成器yield
2015-03-25 16:27
661 查看
1.认识生成器
直接上代码:
<span style="font-size:32px;">def countingdown(n):
print 'counting down!'
while n > 0:
yield n
n-=1
for i in countingdown(5):
print i</span>
输出:
任何使用yield的函数都称为生成器。调用生成器函数将创建一个对象,该对象通过连续调用next()方法生成结果序列。例如:
next()调用生成器函数一直运行到下一条yield语句为止。此时next()将返回值传递给yield,而且函数暂时中止执行。再次调用next()时,将继续执行yield之后的程序。此过程持续到函数返回为止。
通常不会手动调用next(),而是使用for循环(最上面的代码)
2.尝试使用
# coding:utf-8
# Filename : yield2.py
import time
#tail一个文件 如(tail -f)
def tail(f):
while True :
line = f.readline()
if not line:
break
yield line
#下面的生成器用于在很多行中查找特定的字符串
def grep(lines,searchtext):
for line in lines:
if searchtext in line:
yield line
#下面的例子将以上两个生成器合在一起,创建了一个简单的处理管道
wwwlog = tail(open('test.txt'))
pythonlines = grep(wwwlog,'python')
for line in pythonlines:
print line
直接上代码:
<span style="font-size:32px;">def countingdown(n):
print 'counting down!'
while n > 0:
yield n
n-=1
for i in countingdown(5):
print i</span>
输出:
任何使用yield的函数都称为生成器。调用生成器函数将创建一个对象,该对象通过连续调用next()方法生成结果序列。例如:
next()调用生成器函数一直运行到下一条yield语句为止。此时next()将返回值传递给yield,而且函数暂时中止执行。再次调用next()时,将继续执行yield之后的程序。此过程持续到函数返回为止。
通常不会手动调用next(),而是使用for循环(最上面的代码)
2.尝试使用
# coding:utf-8
# Filename : yield2.py
import time
#tail一个文件 如(tail -f)
def tail(f):
while True :
line = f.readline()
if not line:
break
yield line
#下面的生成器用于在很多行中查找特定的字符串
def grep(lines,searchtext):
for line in lines:
if searchtext in line:
yield line
#下面的例子将以上两个生成器合在一起,创建了一个简单的处理管道
wwwlog = tail(open('test.txt'))
pythonlines = grep(wwwlog,'python')
for line in pythonlines:
print line
相关文章推荐
- python-yield-生成器--的作用
- python yield和generators(生成器)
- Python Generators(生成器)——yield关键字
- Python中的生成器和yield详细介绍
- Python中的生成器和yield详细介绍
- Python Generators(生成器)——yield关键字
- Python3.4.3中yield 生成器
- Python生成器与yield
- Python学习25:生成器使用(yield “type = gennerator”)
- Python Generators(生成器)——yield关键字
- 提高你的Python: 解释‘yield’和‘Generators(生成器)
- Python yield 与生成器
- Python: 解释‘yield’和‘Generators(生成器)’
- Python Generators(生成器)——yield关键字
- Python yield 生成器
- python 从yield 学习迭代器和生成器
- Python生成器 yield
- python ‘yield’和‘Generators(生成器)’
- python迭代器、生成器和yield语句
- Python Generators(生成器)——yield关键字