PY3.R1708

Stop iteration return

According to PEP479, the raise of StopIteration to end the loop of a generator may lead to hard to find bugs. This PEP specify that raise StopIteration has to be replaced by a simple return statement.

Noncompliant Code:

Copy
def foo(n):
    for i, num in enumerate(range(n)):
        yield i, num

    raise StopIteration

Compliant Code:

Copy
def foo(n):
    for i, num in enumerate(range(n)):
        yield i, num

    return

The content on this page is adapted from the Pylint User Guide, Copyright ©2003-2022, Logilab, PyCQA and contributors. All rights reserved. https://pylint.pycqa.org/en/latest/index.html#, and is used under the Python Software Foundation License Version 2. Examples, recipes, and other code in the Pylint documentation are additionally licensed under the Zero Clause BSD License.