【问题标题】:Better pythonic idiom for this repeated piece code pattern这种重复的代码模式更好的pythonic成语
【发布时间】:2013-05-11 17:26:45
【问题描述】:

我发现自己经常使用这种 Code Pattern,而且每次我都认为可能有一种更好、更清晰的方式来表达自己:

do_something = True

# Check a lot of stuff / loops
for thing in things:
    ....
    if (thing == 'something'):
        do_something = False
        break

if (do_something):
    # Do something

所以本质上,“计划做某事,但如果随时随地发现这种特殊情况,请不要这样做”

也许这段代码非常好,但我想看看是否有人有更好的建议。

感谢您的任何意见

【问题讨论】:

    标签: python design-patterns idioms readability


    【解决方案1】:

    Python for 循环可以有一个 else 块,如果这些循环没有中断,则执行该块:

    for thing in things:
        ...
        if (thing == 'something'):
            break
    else:
        ... # Do something
    

    此代码的工作方式与您的相同,但不需要标志。我认为这符合您对更优雅的东西的标准。

    【讨论】:

    • 以前从未见过这个......很有趣。如果我缺乏知识是典型的,我想知道这是否会让人感到困惑?
    • @MrE 如果有人以前没有遇到过,文档解释得很好。我看不出有任何理由避免使用它。它比使用标志更具可读性,并且在 Python 程序员中非常有名。
    • 我的意思是,我的第一反应是假设代码缩进不正确,而不是去查找它。不过,无知并不是回避正确答案的好理由,+1
    • @MrE 我明白了。最后的if 在这种情况下使这成为一个问题,但总的来说,我认为它运行良好的事实会提醒某人它不是不正确的缩进(否则它将是一个语法错误)。除此之外,将自己限制在每个人都知道的语言功能上是非常严格的。
    • @Lattyware 忽略我的胡言乱语,我自己都糊涂了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2015-04-21
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2018-10-14
    相关资源
    最近更新 更多