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

    Fundamentos
    Foto do Leandro Hirt

    Como criar arquivos PDF com Python via FPDF

    Gerar documentos de forma automática é uma habilidade valiosa para qualquer pessoa que trabalha com tecnologia. Criar arquivos PDF com

    Ler mais

    Tempo de leitura: 13 minutos
    04/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Decoradores em Python: O que são e como usar

    O que são Decoradores em Python? Os decoradores em Python são ferramentas poderosas. Eles permitem que você altere o comportamento

    Ler mais

    Tempo de leitura: 11 minutos
    04/02/2026
    Logotipo do Python em tamanho grande centralizado acima do texto 'Args e Kwargs', em um design minimalista com fundo colorido sólido
    Fundamentos
    Foto do Leandro Hirt

    Args e Kwargs em Python: Guia Completo

    Você já se deparou com funções que aceitam um número variável de argumentos? Ou já viu aqueles estranhos *args e

    Ler mais

    Tempo de leitura: 11 minutos
    19/01/2026
    Ilustração minimalista do logotipo da linguagem de programação Python ao lado do texto REGEX em fundo neutro
    Fundamentos
    Foto do Leandro Hirt

    Regex Python: Tudo Sobre Expressões Regulares

    Se você já tentou encontrar padrões específicos em textos, validar formatos de email ou extrair informações de documentos, provavelmente já

    Ler mais

    Tempo de leitura: 12 minutos
    05/01/2026
    Logo do Python, texto TXT e ícone de bloco de notas representando arquivos de texto
    Fundamentos
    Foto do Leandro Hirt

    Como Ler Arquivos TXT no Python

    Trabalhar com arquivos de texto é uma das tarefas mais comuns na programação. Aprender como ler arquivo TXT no Python

    Ler mais

    Tempo de leitura: 14 minutos
    24/12/2025
    Comparação visual entre Python 2 e Python 3 com ícones minimalistas
    Fundamentos
    Foto do Leandro Hirt

    Python 2 vs Python 3: Principais Diferenças

    Se você está começando a estudar Python ou já trabalha com a linguagem, provavelmente já se deparou com uma dúvida

    Ler mais

    Tempo de leitura: 20 minutos
    22/12/2025