too-many-return-statements / R0911#

Message emitted:

Too many return statements (%s/%s)

Description:

Used when a function or method has too many return statement, making it hard to follow.

Problematic code:

def to_string(x):  # [too-many-return-statements]
    # max of 6 by default, can be configured
    if x == 1:
        return 'This is one.'
    if x == 2:
        return 'This is two.'
    if x == 3:
        return 'This is three.'
    if x == 4:
        return 'This is four.'
    if x == 5:
        return 'This is five.'
    if x == 6:
        return 'This is six.'
    if x == 7:
        return 'This is seven.'

Correct code:

NUMBERS_TO_STRINGS = {
    1: 'one',
    2: 'two',
    3: 'three',
    4: 'four',
    5: 'five',
    6: 'six',
    7: 'seven'
}


def to_string(x):
    return f'This is {NUMBERS_TO_STRINGS.get(x)}.'

Created by the design checker.