Python · Intermediário · Inglês · Técnico
nonlocal
Palavra-chave que permite a uma função interna reatribuir uma variável da função externa. Sem ela, a atribuição criaria uma variável local nova.
Onde usar
Aparece em closures que mantêm estado, como contadores e acumuladores, sem precisar de uma classe. Não funciona com variáveis globais; para elas existe o global.
Em código
def contador():
n = 0
def inc():
nonlocal n
n += 1
return n
return incExemplos
You need nonlocal there to update the counter.
Você precisa de nonlocal aí para atualizar o contador.
Without nonlocal, Python raises UnboundLocalError.
Sem nonlocal, o Python levanta UnboundLocalError.
Cuidado
Só ler a variável externa não exige nonlocal; ele é necessário apenas quando a função interna faz atribuição, como n += 1.