Explorador da Regra LEGB
Python procura variáveis na ordem: Local, Enclosing (Funções Envolventes), Global, Built-in (Integrado). Clique em cada variável usada abaixo para ver onde o Python a encontra! Abstração / Decomposição: Entender LEGB ajuda a abstrair como o Python gerencia nomes e a decompor o fluxo de busca.
global_scope_var = "Eu sou Global" def outer_function(): enclosing_scope_var = "Eu sou Enclosing" def inner_function(): local_scope_var = "Eu sou Local" print(local_scope_var) # Encontrada onde? print(enclosing_scope_var) # E esta? print(global_scope_var) # E esta? print(len("test")) # E esta função? inner_function() print(enclosing_scope_var) # Fora da inner, onde é encontrada? outer_function() print(global_scope_var) # E esta, fora de tudo?
Identifique onde Python encontra cada variável usada!
Desafio `nonlocal`
A palavra-chave `nonlocal` permite que uma função interna modifique uma variável de uma função externa (mas não global). Corrija o código abaixo usando `nonlocal` para que a função `inner` modifique `outer_var` e o código imprima `Valor final: 15`. Depuração: `nonlocal` é essencial para depurar casos onde você *quer* modificar uma variável de escopo envolvente, evitando criar uma nova local por engano.
Valor final: 15
Prática Avançada de Escopo Concluída!
Parabéns por dominar a regra LEGB e o `nonlocal`! Entender esses conceitos avançados de escopo é crucial para escrever código Python mais complexo e livre de bugs.
Você está pronto para aplicar esse conhecimento ou revisar o material!