ExpertiDict

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

closure

/ˈkloʊʒəɹ/substantivo

Função que lembra as variáveis do escopo onde foi criada, mesmo depois que esse escopo terminou. Em Python, essas variáveis ficam em células referenciadas pela função.

Onde usar

É a base de decorators, callbacks e fábricas de funções. Em code review, aparece quando um contador interno precisa de nonlocal para poder ser modificado.

Em código

def contador():
  n = 0
  def inc():
    nonlocal n
    n += 1
    return n
  return inc  # c = contador(); c() dá 1, 2

Exemplos

That callback is a closure over the user id.

Esse callback é uma closure sobre o id do usuário.

The decorator returns a closure that remembers the function.

O decorator devolve uma closure que lembra a função.

Cuidado

Capturar não é copiar: a closure guarda a própria variável, não o valor que ela tinha no momento da criação.

Sinônimos

fechamento

Origem

Do inglês closure, 'fechamento': a função fecha sobre o ambiente em que nasceu.

Veja também

Todos os termos de Python