python入门笔记(3)

yield的使用
例一:斐波那契數列
def fib(max):
  n,a,b = 0,0,1
  while n<max:
    print b
    a,b = b,a+b
    n +=1

def fib_list(max):
  n,a,b = 0,0,1
  list = []
  while n<max:
    list.append(b)
    a,b = b,a+b
    n +=1
  return list

class Fib(object):
  """docstring for Fab"""
  def __init__(self, max):
    self.max = max
    self.n,self.a,self.b = 0,0,1

  def __iter__(self):
    return self

  def next(self):
    if self.n < self.max:
      r = self.b
      self.a,self.b = self.b,self.a + self.b
      self.n = self.n + 1
      return r
    raise StopIteration()


def fib_final(max):
  n,a,b = 0,0,1
  while n<max:
    yield b
    a,b = b,a+b
    n += 1
    

if __name__ == '__main__':
  for n in fib_final(5):
    print n

例2:文件读取
def read_file(fpath):
  BLOCK_SIZE = 1024
  with open(fpath,'rb') as f:
    while True:
      block = f.read(BLOCK_SIZE)
      if block:
        yield block
      else:
        return

if __name__ == '__main__':
  for line in read_file('fib.py'):
    print line


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值