Dominando a Palavra-chave Global do Python: Como e Quando Usá-la
Dominando a Palavra-chave Global do Python: Como e Quando Usá-la
Este guia explica a palavra-chave global do Python, suas regras, casos de uso práticos e boas práticas para gerenciar variáveis globais entre módulos.
O que é a palavra-chave Global?
Em Python, a palavra-chave global permite declarar que uma variável dentro de uma função refere-se a uma variável de nível de módulo em vez de uma nova local. Isso é essencial quando uma função precisa ler ou modificar uma variável que existe fora de seu próprio escopo.
Regras para usar global
- Variáveis criadas dentro de uma função são locais por padrão.
- Variáveis definidas no nível do módulo são globais automaticamente;
globalé desnecessário ao apenas lê-las. - Use
globaldentro de uma função quando pretender atribuir a uma variável de nível de módulo. - Colocar
globalfora de uma função não tem efeito.
Uso prático de global
Abaixo estão exemplos ilustrativos demonstrando tanto as armadilhas quanto a abordagem correta.
Exemplo 1: Acessando variável global de dentro de uma função
c = 1 # variável global def adiciona(): print(c) adiciona() Saída:
1
Aqui, c é lida com sucesso porque nenhuma atribuição ocorre dentro de adiciona().
Exemplo 2: Tentando modificar variável global sem global
c = 1 # variável global def adiciona(): c = c + 2 # tenta modificar c print(c) adiciona() Saída:
UnboundLocalError: local variable 'c' referenced before assignment
O erro ocorre porque Python trata c como nova variável local referenciada antes da atribuição.
Exemplo 3: Modificando variável global usando global
c = 0 # variável global def adiciona(): global c c = c + 2 print("Dentro de adiciona():", c) adiciona() print("No main:", c) Saída:
Dentro de adiciona(): 2 No main: 2
Declarando global c, a função atualiza o c de nível de módulo, e a mudança é visível fora da função.
Compartilhando variáveis globais entre módulos Python
Para aplicações maiores, é comum centralizar configuração em módulo dedicado, como config.py. Outros módulos podem importar e modificar esses valores, permitindo estado consistente pelo programa.
Exemplo 4: Variáveis globais entre módulos
Crie config.py:
a = 0 b = "vazio" Crie atualiza.py para modificar os globais:
import config config.a = 10 config.b = "alfabeto" Crie principal.py para verificar as mudanças:
import config import atualiza print(config.a) print(config.b) Saída:
10 alfabeto
Este padrão mantém estado compartilhado em um lugar enquanto permite atualizações controladas de outros módulos.
Usando global em funções aninhadas
Quando uma função aninhada precisa modificar variável local a uma função externa, a palavra-chave global ainda pode ser aplicada para criar uma variável verdadeiramente global.
Exemplo 5: Variável global em função aninhada
def foo(): x = 20 def bar(): global x x = 25 print("Antes de chamar bar:", x) print("Chamando bar agora") bar() print("Depois de chamar bar:", x) foo() print("x no main:", x) Saída:
Antes de chamar bar: 20 Chamando bar agora Depois de chamar bar: 20 x no main: 25
Dentro de foo(), x permanece variável local. A bar() aninhada declara x como global, então a atribuição afeta o x de nível de módulo e é visível após foo() terminar.
Embora global possa ser útil, geralmente é melhor projetar funções que retornam novos valores em vez de mutar estado global. Isso promove código mais claro e testes mais fáceis. Para regras detalhadas da linguagem, veja a documentação oficial do Python sobre a declaração global.
python
- Dominando Tipos de Dados em Python: Guia Prático
- Dominando Operadores em Python: Guia Completo
- Dominando a Declaração Pass em Python: Guia Prático
- Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
- Entendendo Variáveis Globais, Locais e Nonlocal em Python
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Dominando Iteradores em Python: Como Funcionam e Como Criar os Seus
- Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
- Dominando datetime do Python: Guia Prático de Datas, Horários e Fusos Horários
- Visão Geral do Python: Linguagem de Alto Nível, Legível, Interativa e Orientada a Objetos