python生成器yield

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值