ExpertiDict

Python · Intermediário · Inglês · Técnico

nonlocal

/nɑnˈloʊkəl/palavra-chave

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 inc

Exemplos

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.

Veja também

Todos os termos de Python