PY3.E0117

Nonlocal without binding

Emitted when a nonlocal variable does not have an attached name somewhere in the parent scopes.

Noncompliant Code:

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

    bar()
    print(msg)

Compliant Code:

Copy
def foo():
    msg = 'Outside'

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

    bar()
    print(msg)

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.