ExpertiDict

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

LEGB

/ˈɛ.li ˈe ˈʒe ˈbe/substantivo

Regra de escopo do Python: ao buscar um nome, procura-se primeiro no escopo Local, depois no Envolvente (Enclosing), no Global e por fim nos nomes embutidos (Built-in).

Onde usar

Explica por que uma variável local sombreia uma global e por que atribuir a um nome dentro da função cria uma variável nova. Aparece ao depurar um UnboundLocalError.

Em código

x = 'global'
def f():
  x = 'local'
  def g():
    print(x)  # Enclosing
  g()
f()
print(x)

Exemplos

Pela regra LEGB, o Python acha primeiro a variável local.

Esse nome sombreia o embutido list, e isso quebra o resto do arquivo.

Cuidado

Blocos como if, for e while não criam escopo em Python, então a variável de um for continua viva depois do laço.

Sinônimos

regra de escopo

Origem

Iniciais de Local, Enclosing, Global e Built-in.

Veja também

Todos os termos de Python