from collections import deque
def search(lines,pattern,history=5):
previous_lines = deque(maxlen=history)
for line in lines:
if pattern in line:
yield line,previous_lines
previous_lines.append(line)
if __name__ == "__main__":
with open('history') as f:
for line,prevlines in search(f,'python',5):
for pline in prevlines:
print( pline , end ='')
print('-' * 20)
Can someone help me to understand what the above snippet does ?