Em Python, as variáveis desempenham um papel fundamental no armazenamento e gerenciamento de dados. Seu comportamento e acessibilidade dependem de onde estão definidos no programa. Neste artigo exploraremos variáveis globais e locais como elas funcionam e cenários comuns com exemplos.
Variáveis locais
Variáveis locais são criadas dentro de uma função e existem apenas durante sua execução. Eles não podem ser acessados de fora da função.
marcação de notas de rodapé
Exemplo 1: Neste código estamos criando e acessando uma variável local dentro de uma função.
Pythondef greet(): msg = 'Hello from inside the function!' print(msg) greet()
Saída
Hello from inside the function!
Explicação: Nós definimos saudar() com uma variável local mensagem e imprima. Como msg existe apenas durante a execução da função, ela é acessada dentro da função. Chamando saudar() exibe a mensagem.
Exemplo 2 : Neste exemplo estamos criando uma variável local dentro de uma função e depois tentando acessá-la fora da função, o que causa um erro.
Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Saída
Traceback (última chamada mais recente):
Arquivo '/home/guest/sandbox/Solution.py' linha 6 em
print('Função externa:' mensagem)
NameError: o nome 'msg' não está definido
Explicação: mensagem é uma variável local dentro saudar() e só pode ser acessado lá. Imprimi-lo externamente causa um erro porque ele não existe globalmente.
Variáveis Globais
Variáveis globais são declaradas fora de todas as funções e podem ser acessadas em qualquer lugar do programa, inclusive dentro de funções.
Neste exemplo estamos criando uma variável global e acessando-a dentro e fora de uma função.
Pythonmsg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg)
Saída
Inside function: Python is awesome! Outside function: Python is awesome!
Explicação: mensagem é uma variável global acessível dentro e fora do mostrar() função. Chamando mostrar() imprime o global mensagem e impressão mensagem fora da função funciona conforme o esperado.
Observação: Se uma variável não for encontrada dentro de uma função (escopo local), o Python a procura automaticamente no escopo global. No entanto, se uma variável local tiver o mesmo nome de uma global, ela ocultará a variável global dentro dessa função.
Uso de variáveis locais e globais
Se uma variável for definida global e localmente com o mesmo nome, a variável local obscurece a variável global dentro da função. As alterações na variável local não afetam a variável global, a menos que você declare explicitamente a variável como global.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Saída
Me too. I love Geeksforgeeks
Explicação: Dentro diversão() é é uma variável local definida como 'Eu também'. e imprime esse valor. Fora do mundo é permanece 'Eu amo Geeksforgeeks', então imprimindo é depois mostra o valor global.
Modificando variáveis globais dentro de uma função
Por padrão, não se pode modificar uma variável global dentro de uma função sem declará-la como global. Se você tentar o Python, gerará um erro porque trata a variável como local. Para modificar uma variável global use o palavra-chave global .
Sem global (causa erro)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Saída
UnboundLocalError: variáveis locais referenciadas antes da atribuição
Explicação: Dentro de fun() Python assume que s é local, pois tentamos modificá-lo. Mas não existe local s antes dessa linha, portanto ocorre um erro.
Com global (funciona corretamente)
Pythons = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s)
Saída
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section
Explicação:
- Declarar s como global diz ao Python para usar a variável do escopo global.
- A função primeiro anexa 'GFG' e depois reatribui s.
- As alterações persistem fora da função.
Global vs Local com o mesmo nome
Pythona = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a)
Saída
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3
Explicação:
- f() imprime a global sem alterá-lo.
- g() cria um local deixando o global intacto.
- h() declara a como global e o modifica.
Variável Local vs Variável Global
| Base de comparação | Variável Global | Variável local |
|---|---|---|
| Definição | Declarado fora das funções | Declarado dentro de uma função |
| Vida | Criado quando o programa é iniciado e destruído quando termina | Criado quando a função é chamada e destruído quando retorna |
| Compartilhamento de dados | Compartilhado entre todas as funções | Não compartilhado; existe apenas dentro de sua função |
| Escopo | Pode ser acessado em qualquer lugar do programa | Acessível apenas dentro da função |
| Parâmetros necessários | Nenhuma passagem de parâmetro necessária | Pode ser criado através de parâmetros ou atribuições dentro da função |
| Armazenar | Gerenciado no namespace global (não em local de memória fixo) | Armazenado no namespace local da função (stack frame) |
| Valor | As mudanças afetam todo o programa | As alterações são locais e não afetam outras funções |