Como usar variáveis globais em Python (palavra-chave global)
Aprenda como as variáveis globais funcionam em Python. Entenda o escopo das variáveis, os namespaces locais versus globais e como modificar variáveis usando a palavra-chave global.
Visão geral
Compreender os namespaces e o escopo das variáveis é fundamental para escrever software livre de bugs em Python. O escopo determina quais partes do seu programa podem acessar ou modificar uma variável. Uma variável declarada fora de todas as funções existe no escopo global e pode ser lida em qualquer lugar do módulo.
No entanto, surge um problema quando uma função tenta modificar (reatribuir) uma variável global. Por padrão, quando Python vê uma atribuição dentro de uma função, ele assume que a variável é local para a função. Se você tentar modificar uma variável global sem declará-la como global, o Python criará uma variável local com o mesmo nome, deixando a variável global inalterada (ou gerará um `UnboundLocalError`).
Para dizer explicitamente ao Python que você deseja modificar uma variável no namespace global em vez de criar um local, você deve declará-la usando a palavra-chave `global` dentro da função. Embora o uso de variáveis globais às vezes seja necessário, geralmente é considerado uma prática ruim em projetos de software de grande porte porque torna o estado difícil de rastrear e depurar.
Saída de código e execução
Este script demonstra a leitura de variáveis globais, a armadilha de sombreamento de variáveis e a modificação de variáveis globais usando a palavra-chave global.
counter = 10 # Global variable
def read_counter():
# Reading a global variable works out-of-the-box
print("Reading global counter:", counter)
def shadow_counter():
# Attempting to assign without 'global' creates a local variable
counter = 20 # Shadowing
print("Inside shadow function:", counter)
def modify_counter():
global counter # Declaring we are writing to global scope
counter = 50
print("Inside modify function:", counter)
read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10
modify_counter()
print("Counter after modify function:", counter) # Now 50Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50Implementação passo a passo
- Declare variáveis que precisam ser acessadas globalmente fora de qualquer escopo de função.
- Leia variáveis globais dentro de qualquer função sem adicionar declarações especiais.
- Use a palavra-chave global (por exemplo, contador global) dentro das funções se precisar modificar o valor da variável global.
- Limite o uso de variáveis globais para evitar confusão de escopo e poluição de namespace.
Perguntas frequentes
O que é sombreamento de variável em Python?
O sombreamento ocorre quando uma variável declarada dentro de um escopo local (como uma função) tem o mesmo nome que uma variável em um escopo global externo. A variável local mascara a global, tornando-a temporariamente inacessível dentro desse escopo.
Qual é a diferença entre palavras-chave globais e não locais?
global é usado para acessar variáveis definidas no escopo do módulo mais externo. nonlocal é usado dentro de funções aninhadas para acessar variáveis definidas no escopo da função envolvente (externa).
Tópicos Relacionados
Aprenda como lidar com exceções em Python usando blocos try, exceto, else e finalmente. Escreva código Python livre de erros e resistente a falhas.
Como criar uma classe em PythonAprenda como criar uma classe em Python. Domine o construtor __init__, métodos de instância, palavra-chave self e instanciação de objetos.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Variáveis e tipos de dados Python explicados
Entenda as variáveis do Python e os principais tipos de dados (strings, inteiros, flutuantes, booleanos). Um guia completo para iniciantes sobre atribuição de memória em Python.
Folha de dicas dos métodos de string Python
Um guia de referência completo para manipulação de strings em Python. Domine a formatação, pesquisa, divisão, substituição e verificação de propriedades de string.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.