Python · Intermediário · Português · Técnico
LEGB
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.