在 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
我正在编写一个程序来读取本地存储在 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