您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python