This came up once before, and I think the reasoning is that a for loop without a break statement means the 'else' is redundant.

In your example, you can remove the 'else' and it would be functionally the same.

On 12 January 2014 15:57, Kay Hayen <> wrote:


often I write code like this:

def _areConstants(expressions):
    for expression in expressions:
        if not expression.isExpressionConstantRef():
            return False

        if expression.isMutable():
            return False
        return True

That is to search in an iterable, and return based on finding something, or returning in the alternative, I specifically prefer the "else:" branch over merely putting it after the "for" loop.

This triggers the above message, which I consider flawed, because as soon as there is a "raise", or "return", that should be good enough as well. Basically any aborting statement, not only break.

I wanted to hear your opinion on this, pylint bug, or only in my mind.

code-quality mailing list