在 for 循环中使用 Return

Using Return in a for loop

我正在编写一个程序来读取本地存储在 C 驱动器上的日志文件。这个日志文件不断更新,我的程序只打印日志中的新文本行,而不是以前存储的行。我需要将控制台中的行打印到 return 行本身的相同功能。我能看到的唯一方法是将 return 放在 for 循环中,但这是不可能的,因为它结束了函数。

我需要这个读取行到 return 行的函数,因为 returned 行将被发送到另一个函数,该函数解释该行以识别其中的某些数据。

如何在函数中循环 return 或将数据从一个函数传递到另一个函数?

我在 Windows 8.1 Python v2.7.9

使用 generator function 在迭代时生成数据。当你迭代它们时,生成器可以无限地产生数据:

def read_log_lines(filename):
    while True:
        # code to read lines 
        if is_new(line):
            yield line

调用此函数时,returns 一个生成器对象。然后,您可以像遍历列表一样遍历该对象,每次迭代生成器函数中的代码都将是 运行,直到它到达 yield 语句。那时,产生的值作为迭代的下一个值返回,生成器函数暂停,直到您再次迭代。

所以你会像这样使用它:

for new_line in read_log_lines(filename):
    # new_line was produced by the generator function