我在阅读函数式编程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)发布于 2015-09-18 09:08:25
我不认为有任何理由把try...except留在那里。例如,重举仍将带相同的回溯,因此生成器的行为与其相同。
换句话说,它在那里是没有意义的,也许是一个遗留下来的重构的假象。
您可以进一步简化循环,删除冗余的第一行:
def get_log_lines(log_file):
while True:
line = read_line(log_file)
if complex_condition(line):
yield line发布于 2015-09-18 11:40:22
作者正在写一个例子。虽然try...catch块实际上并没有在这里执行任何操作,但他可能包含了它,这样您就可以看到循环是如何中断的。
https://stackoverflow.com/questions/32648006
复制相似问题