pylint-errors

E0115 (nonlocal-and-global)

:x: Problematic code:

MSG = 'Outside'


def foo():
    def bar():
        nonlocal MSG
        global MSG
        MSG = 'Inside'

    bar()
    print(MSG)

:heavy_check_mark: Correct code:

MSG = 'Outside'


def foo():
    global MSG
    MSG = 'Inside'
    msg = 'Outside'

    def bar():
        nonlocal msg
        msg = 'Inside'

    bar()
    print(MSG)
    print(msg)

Rationale:

Emitted when a name is both nonlocal and global.