Variáveis globais e locais em Python
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.
Exemplo 1: Neste código estamos criando e acessando uma variável local dentro de uma função.
Python def 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.
Python msg = '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.
Python def 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)
Python def 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)
Python s = '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
Python a = 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 |