Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Escopo de Variáveis Locais, Globais e Não Locais | Escopo de Variáveis, Funções Aninhadas e Closures
Conceitos de Programação Funcional em Python

bookEscopo 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 len ou range.

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()
copy
  • 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_var cria uma variável de escopo de fechamento que pode ser acessada por funções aninhadas;
  • A função aninhada inner define local_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?

question mark

O que a palavra-chave nonlocal faz em Python?

Selecione a resposta correta

question mark

O que é a regra LEGB?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 1
some-alt