Files
python3-cookbook/cookbook/c04/p06_generator_extrastate.py
2014-09-15 21:49:34 +08:00

37 lines
785 B
Python

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
Topic: 带外部状态的生成器
Desc :
"""
from collections import deque
class linehistory:
def __init__(self, lines, histlen=3):
self.lines = lines
self.history = deque(maxlen=histlen)
def __iter__(self):
for lineno, line in enumerate(self.lines, 1):
self.history.append((lineno, line))
yield line
def clear(self):
self.history.clear()
def gen_extrastate():
with open('somefile.txt') as f:
lines = linehistory(f)
for line in lines:
if 'python' in line:
for lineno, hline in lines.history:
print('{}:{}'.format(lineno, hline), end='')
if __name__ == '__main__':
gen_extrastate()