gpt4 book ai didi

python - Python 中的停止迭代

转载 作者:太空宇宙 更新时间:2023-11-04 01:01:28 26 4
gpt4 key购买 nike

我在阅读函数式编程 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 保留在那里。例如,re-raise 仍将带有相同的回溯,因此生成器的行为在那里保持不变。

换句话说,它在那里毫无意义,也许是重构的遗留产物。

您可以进一步简化循环,删除多余的第一行:

def get_log_lines(log_file): 
while True:
line = read_line(log_file)
if complex_condition(line):
yield line

关于python - Python 中的停止迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32648006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com