37 lines
785 B
Python
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()
|
|
|
|
|