#!/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()