Guide / Python — basi del linguaggio / Scope

Scope

LEGB: locale, enclosing, globale, built-in.

Un nome è risolto cercando prima lo scope locale, poi quelle delle funzioni esterne (enclosing), poi il modulo globale, infine i built-in. `global x` e `nonlocal x` permettono di assegnare rispettivamente al modulo o allo scope esterno non globale.

Esempio

counter = 0
def outer():
    x = 1
    def inner():
        nonlocal x
        x += 1
        return x
    return inner