在函数中使用yield时,函数并不会返回数据,而是返回一个生成器对象(generator object),只有当循环遍历时,才会实际运行取得实际的值。

示例一是我看到一本书上的例子,示例二是我将它简化后的例子,功能上没有任何区别。

#示例一:def fileReadLines():    seek = 0    while True:        with open('/home/python/passwd', 'r') as f:            f.seek(seek)            data = f.readline()            if data:                seek = f.tell()                yield data            else:                return                for item in fileReadLines():    print(item)#示例二:def fileReadLine():    with open('/home/python/passwd', 'r') as f:        for line in f:            yield linefor item in fileReadLine():   print(item)