Escopo de Variáveis em Python Explicado com Exemplos

Tempo de leitura: 7 minutos
Logo do Python com as palavras global e local

Entender o escopo de variáveis em Python é essencial para escrever códigos limpos, organizados e sem erros difíceis de rastrear. Muitos iniciantes se confundem quando uma variável funciona em um lugar, mas não funciona em outro. Isso acontece porque cada variável tem um alcance específico dentro do código, chamado de escopo.

Neste guia completo, você vai aprender o que é escopo de variáveis, por que ele importa e como usá-lo na prática com exemplos simples. Mesmo que você esteja começando agora em Python, este conteúdo foi criado de forma acessível e direta para facilitar seu aprendizado.


O que é Escopo de Variáveis em Python

O escopo de uma variável define onde ela pode ser usada dentro de um programa. Python sempre segue regras claras para decidir se uma variável existe e onde ela pode ser acessada. Isso evita conflitos e ajuda a manter o código organizado.

Existem dois tipos principais de escopo:

  • Escopo local
  • Escopo global

Ao entender esses dois grupos, você vai conseguir estruturar seu código de forma mais clara. Se quiser se aprofundar depois, consulte também nossos artigos sobre funções em Python e sobre os módulos e pacotes no Python.

Configura o vídeo do canal Escola de Código que explica melhor sobre o escopo de variáveis em Python abaixo:

YouTube player

Por que o Escopo é Importante

O escopo mantém o código previsível. Sem ele, seria muito fácil criar variáveis com o mesmo nome que se misturam e geram erros inesperados.

Veja alguns benefícios práticos:

  • Evita sobrescrever valores por acidente.
  • Mantém o código mais seguro, pois variáveis de uso interno ficam protegidas.
  • Facilita a leitura, já que fica claro onde cada dado é usado.
  • Ajuda a criar funções mais confiáveis e independentes.

Escopo Global em Python

Uma variável global é criada fora de funções. Isso significa que ela pode ser usada em qualquer parte do código.

Esse tipo de variável é útil quando você precisa compartilhar uma informação entre várias funções. Porém, deve ser usada com cuidado, pois pode deixar o código mais difícil de manter.

Exemplo simples

Python
mensagem = "Olá, mundo!"

def mostrar():
    print(mensagem)

mostrar()

Aqui, a variável mensagem existe no programa inteiro. Como ela está fora da função, a função consegue acessá-la sem problemas.


Escopo Local em Python

Uma variável local existe apenas dentro da função onde foi criada. Ela não pode ser acessada fora dela.

Esse comportamento deixa o código mais seguro e previsível, já que cada função trabalha com seus próprios valores internos.

Exemplo

Python
def soma():
    x = 10
    y = 5
    return x + y

print(soma())
print(x)

A última linha gera erro, porque x não existe fora da função.


Usando Variáveis Globais Dentro de Funções

Se você tentar modificar uma variável global dentro de uma função, irá gerar erro, porque o Python entende que você quer criar uma variável nova e local com o mesmo nome. Para mudar esse valor, é preciso usar a palavra global.

Exemplo

Python
contador = 0

def aumentar():
    global contador
    contador = contador + 1

A palavra global diz ao Python que você quer usar a variável do escopo global, não criar outra.


Por que Evitar o Uso Excessivo de Globais

Mesmo sendo úteis em alguns casos, variáveis globais podem causar problemas:

  • Tornam o código mais difícil de testar.
  • Criam dependências entre funções.
  • Podem gerar erros silenciosos se usadas de forma incorreta.

Por isso, prefira passar valores como parâmetros sempre que possível.


Escopo Aninhado e Funções Internas

Python permite criar funções dentro de outras funções. Nesse caso, a função interna pode acessar variáveis criadas na função externa. Esse tipo de escopo é chamado de escopo não local.

Exemplo simples

Python
def externa():
    texto = "Oi"

    def interna():
        print(texto)

    interna()

Aqui, a função interna consegue acessar a variável texto mesmo ela não sendo global.


Alterando Variáveis do Escopo Externo com nonlocal

Quando você quer alterar uma variável da função externa, precisa usar a palavra nonlocal.

Exemplo

Python
def contador():
    total = 0

    def aumentar():
        nonlocal total
        total = total + 1

Essa técnica é útil em casos específicos, como criar funções geradoras de valores.


Práticas Recomendadas ao Trabalhar com Escopos

Para manter seu código limpo e fácil de entender, siga estas dicas:

  • Prefira variáveis locais sempre que possível.
  • Evite alterar variáveis globais.
  • Use funções bem definidas para separar as responsabilidades.
  • Utilize nomes claros e descritivos.
  • Não reutilize nomes que podem causar confusão.

Se você é iniciante, recomendo também a leitura do artigo sobre erro try except em Python para entender como lidar com falhas causadas por escopos.


Exemplo Completo Unindo Todos os Conceitos

O exemplo abaixo mostra o uso de escopo global, local e não local em um único programa.

Python
contador_global = 0

def criar_contador():
    total = 0

    def aumentar():
        nonlocal total
        global contador_global
        total += 1
        contador_global += 1
        return total, contador_global

    return aumentar

contador1 = criar_contador()
print(contador1())
print(contador1())

Esse tipo de estrutura aparece em funções mais avançadas, como closures e decoradores.


Quando o Escopo se Torna um Problema

Você pode enfrentar erros como:

  • Variável não definida.
  • Variável chamada antes de ser atribuída.
  • Resultado inesperado em funções.

Esses erros quase sempre estão ligados ao uso incorreto de escopo.

Um bom exercício é refatorar códigos antigos e identificar onde cada variável pertence. Isso melhora muito sua habilidade de leitura de código.


Conclusão

O escopo de variáveis em Python é um dos fundamentos mais importantes da linguagem. Ele define onde cada variável pode ser usada, evitando conflitos e deixando o código mais organizado.

Agora você entende:

  • A diferença entre escopo local e global.
  • Como funciona a regra LEGB.
  • O papel das palavras chave global e nonlocal.
  • Como evitar erros comuns relacionados ao escopo.
  • Como usar escopos de forma prática em funções reais.

Dominar esse tema vai ajudar você a evoluir rapidamente no aprendizado em Python. Continue estudando conteúdos como variáveis em Python e tuplas em Python para reforçar sua base.


Perguntas Frequentes (FAQ)

1. O que é escopo de variável em Python?
É o local do código onde a variável pode ser usada.

2. O que é variável global?
É uma variável criada fora das funções.

3. O que é variável local?
É uma variável criada dentro de uma função.

4. Posso alterar uma variável global dentro da função?
Sim, usando a palavra global.

5. O que é nonlocal?
Permite alterar variáveis da função externa.

6. O que é a regra LEGB?
É a ordem usada para buscar variáveis no código.

7. Variáveis locais existem para sempre?
Não, elas acabam quando a função termina.

8. Posso usar o mesmo nome em escopos diferentes?
Sim, mas pode gerar confusão.

9. Funções internas acessam variáveis externas?
Sim, se estiverem no escopo acima.

10. Variáveis globais são recomendadas?
Devem ser usadas com cuidado.

11. Como evitar erros de escopo?
Use nomes claros e prefira variáveis locais.

12. Escopo afeta desempenho?
Afeta pouco, mas ajuda na organização do código.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Logo do Python com símbolos de lista, tupla e dicionário
    Fundamentos
    Foto do Leandro Hirt

    Diferença de lista, tupla, conjunto e dicionário em Python

    Quando começamos a aprender Python, encontramos diferentes formas de guardar e organizar dados. Entre elas estão listas, tuplas, conjuntos e

    Ler mais

    Tempo de leitura: 7 minutos
    02/12/2025
    Imagem do Logo do Python dentro de um celular
    Fundamentos
    Foto do Leandro Hirt

    Como Rodar Python no Celular: Guia Completo para Iniciantes

    Programar no celular pode parecer impossível, mas a tecnologia já permite que você escreva e execute códigos Python direto do

    Ler mais

    Tempo de leitura: 21 minutos
    28/11/2025
    Código Python mostrando uma função recursiva de fatorial com condição if e chamada da função dentro dela
    Fundamentos
    Foto do Leandro Hirt

    Recursão em Python: Como Funciona e Quando Usar

    A recursão é uma técnica de programação onde uma função chama a si mesma para resolver um problema. Em Python,

    Ler mais

    Tempo de leitura: 8 minutos
    17/11/2025
    Símbolo de repetição ao lado do logotipo do Python pensativo, representando o conceito de loops na programação em Python.
    Fundamentos
    Foto do Leandro Hirt

    Como Funcionam os Loops em Python

    Os loops em Python são estruturas fundamentais que permitem repetir um conjunto de instruções várias vezes sem precisar escrever o

    Ler mais

    Tempo de leitura: 7 minutos
    10/11/2025
    Código Python com valores Boolean True e False em tela de computador
    Fundamentos
    Foto do Leandro Hirt

    O que é Boolean em Python? Entenda os valores True e False

    Os valores Boolean são um dos conceitos mais importantes da programação em Python. Eles representam apenas duas possibilidades: verdadeiro ou

    Ler mais

    Tempo de leitura: 5 minutos
    09/11/2025
    Logo do Python com expressão pensativa e o texto range(), representando a função range no Python
    Fundamentos
    Foto do Leandro Hirt

    Como Funciona o range() no Python

    A função range() é uma das mais usadas no Python, principalmente quando o assunto é laços de repetição. Ela serve

    Ler mais

    Tempo de leitura: 6 minutos
    06/11/2025

    Minicurso de Python

    Insira seu e-mail e para receber acesso às aulas agora mesmo