首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的StopIteration

Python中的StopIteration
EN

Stack Overflow用户
提问于 2015-09-18 09:04:14
回答 2查看 2K关注 0票数 2

我在阅读函数式编程python时遇到了一个问题。

代码语言:javascript
复制
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异常:

代码语言:javascript
复制
def get_log_lines(log_file): 
    line = read_line(log_file) 
    while True:
        if complex_condition(line):
            yield line
        line = read_line(log_file)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-18 09:08:25

我不认为有任何理由把try...except留在那里。例如,重举仍将带相同的回溯,因此生成器的行为与其相同。

换句话说,它在那里是没有意义的,也许是一个遗留下来的重构的假象。

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

代码语言:javascript
复制
def get_log_lines(log_file): 
    while True:
        line = read_line(log_file) 
        if complex_condition(line):
            yield line
票数 3
EN

Stack Overflow用户

发布于 2015-09-18 11:40:22

作者正在写一个例子。虽然try...catch块实际上并没有在这里执行任何操作,但他可能包含了它,这样您就可以看到循环是如何中断的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32648006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档