Variáveis Locais e Globais em Python: Como Usar Corretamente

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é uma variável em Python

Uma variável é um nome que referencia um objeto na memória do computador. Em Python, as variáveis não possuem tipos fixos. O tipo pertence ao objeto ao qual a variável se refere.

x = 42
x = "agora é uma string"

Variáveis locais em Python

Definição de variáveis locais

Uma variável local é definida dentro de uma função e só pode ser acessada dentro dela. Após a execução da função, a variável local é removida da memória.

def say_hello():
    name = "Python"  # variável local
    print("Olá,", name)

say_hello()
# print(name)  # Erro: name não está definida

A variável name existe apenas dentro da função say_hello e não pode ser acessada fora dela.

Vantagens das variáveis locais

Variáveis locais garantem o isolamento dos dados e evitam alterações indesejadas em valores de outras partes do programa. Elas liberam memória automaticamente após a execução da função.

Variáveis globais em Python

O que são variáveis globais

Uma variável global é declarada fora de todas as funções e pode ser acessada em qualquer lugar do arquivo do programa. Essas variáveis mantêm seus valores durante toda a execução do programa.

language = "Python"  # variável global

def show():
    print("Idioma:", language)

show()  # Idioma: Python

Problemas ao modificar variáveis globais

Ao tentar modificar uma variável global dentro de uma função, ocorre um erro:

counter = 0

def increment():
    counter += 1  # UnboundLocalError!

O Python interpreta counter como uma variável local devido à operação de atribuição, mas ela não foi definida localmente.

A palavra-chave global

Usando global para modificar variáveis globais

A palavra-chave global permite modificar variáveis globais dentro de funções:

count = 0

def increment():
    global count
    count += 1

increment()
print(count)  # 1

Aplicação de global em operações matemáticas

total = 0

def add(x):
    global total
    total += x

add(10)
add(20)
print(total)  # 30

Quando usar global

A palavra-chave global deve ser usada com cuidado, pois pode dificultar a depuração do programa e tornar o código menos legível.

Escopo de variáveis: a regra LEGB

Princípio de busca de variáveis

O Python busca variáveis seguindo a regra LEGB nesta ordem:

  • L (Local) — dentro da função atual
  • E (Enclosing) — em funções aninhadas
  • G (Global) — no nível do módulo
  • B (Built-in) — nomes internos do Python

Exemplo de funcionamento da regra LEGB

x = "global"

def outer():
    x = "enclosing"
    
    def inner():
        x = "local"
        print(x)
    
    inner()

outer()  # local

O Python encontra a variável x no escopo local e usa seu valor.

A palavra-chave nonlocal

Acessando variáveis de funções aninhadas

A palavra-chave nonlocal é usada para trabalhar com variáveis de escopos externos, mas não globais:

def outer():
    count = 0
    
    def inner():
        nonlocal count
        count += 1
        return count
    
    return inner

f = outer()
print(f())  # 1
print(f())  # 2

Diferenças entre global e nonlocal

A palavra-chave global trabalha com variáveis no nível do módulo, enquanto nonlocal lida com variáveis de funções externas dentro do mesmo escopo.

Blogs

Book Recommendations