[英]StopIteration in Python
在阅读函数式编程python时遇到问题。
def get_log_lines(log_file):
line = read_line(log_file)
while True:
try:
if complex_condition(line):
yield line
line = read_line(log_file)
except StopIteration:
raise
将try...except
语句添加到read_line
周围。 为什么不让read_line
像这样抛出StopIteration
异常:
def get_log_lines(log_file):
line = read_line(log_file)
while True:
if complex_condition(line):
yield line
line = read_line(log_file)
我认为没有任何理由继续try...except
那里。 例如,重新引发仍将带有相同的回溯,因此生成器的行为在该处不变。
换句话说,它在那里毫无意义,也许是重构的遗留产物。
您可以删除多余的第一行来进一步简化循环:
def get_log_lines(log_file):
while True:
line = read_line(log_file)
if complex_condition(line):
yield line
作者正在写一个例子。 虽然try ... catch块实际上在这里什么也没做,但他可能将其包括在内,以便您可以查看循环的中断方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.