关于判断文本块的生成器小函数理解的有关问题

关于判断文本块的生成器小函数理解的问题
Python code

def blocks(file):
    block=[]                                       #先是定义一个空的变量
    for line in lines(file):                  #在for循环中判断这个字符串
        if line.strip():                           #如果line中有值
            block.append(line)            #把字符串添加到block中
        elif block:                                #如果block有值
            yield ''.join(block).strip()    #添加空格把每一个文本块连接起来
            block=[]                              #为什么要把它清空呢



是不是我还不了解生成的特点,想了一晚上,还是没有搞懂,求解中....

------解决方案--------------------
拿一个具体的输入文件试一下就知道了。
------解决方案--------------------
如果不清空就重复了,比如读了3行
111
222
333
然后join, 下次又读2行
444
555
如果你不清空,则blocks里包括5行。