Escopo de Variáveis Locais, Globais e Não Locais
Deslize para mostrar o menu
Compreender como o Python determina o escopo das variáveis é fundamental para escrever códigos claros e livres de erros. O Python utiliza um conjunto específico de regras, conhecido como regra LEGB, para decidir onde buscar o valor de uma variável. LEGB significa Local, Enclosing, Global e Built-in. Ao referenciar uma variável, o Python procura seu valor nesta ordem:
- Local: variáveis definidas dentro da função ou método atual;
- Enclosing: variáveis no escopo da função mais próxima que envolve (em caso de funções aninhadas);
- Global: variáveis definidas no nível superior do módulo ou declaradas como globais usando a palavra-chave
global; - Built-in: nomes pré-definidos no Python, como
lenourange.
Essa regra permite que o Python resolva nomes de variáveis de forma eficiente e ajuda a prever de onde virá o valor de uma variável. Em alguns casos, pode ser necessário modificar variáveis fora do escopo da função atual. O Python oferece duas palavras-chave para isso: global e nonlocal. A palavra-chave global permite atribuir um valor a uma variável no nível do módulo, enquanto nonlocal possibilita modificar uma variável no escopo da função mais próxima que não seja global.
123456789101112131415161718# Global scope global_var = "I am global" def outer(): # Enclosing scope enclosing_var = "I am enclosing" def inner(): # Local scope local_var = "I am local" print("Local:", local_var) print("Enclosing:", enclosing_var) # Found in enclosing scope print("Global:", global_var) # Found in global scope print("Built-in:", len([1, 2, 3])) # 'len' comes from built-in scope inner() outer()
- A variável
global_varé definida no escopo global e pode ser acessada de qualquer lugar no módulo; - Dentro da função
outer,enclosing_varcria uma variável de escopo de fechamento que pode ser acessada por funções aninhadas; - A função aninhada
innerdefinelocal_var, que existe apenas dentro dessa função e demonstra o acesso a variáveis de todos os escopos de fechamento; - A função
lené usada para mostrar como o Python pode acessar nomes do escopo embutido.
Isso mostra como o Python encontra valores de variáveis pesquisando nos escopos local, de fechamento, global e embutido, nessa ordem, tornando a resolução de variáveis previsível e organizada.
1. O que a palavra-chave nonlocal faz em Python?
2. O que é a regra LEGB?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo