logo

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.



marcação de notas de rodapé

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çãoDeclarado fora das funçõesDeclarado dentro de uma função
VidaCriado quando o programa é iniciado e destruído quando terminaCriado quando a função é chamada e destruído quando retorna
Compartilhamento de dadosCompartilhado entre todas as funçõesNão compartilhado; existe apenas dentro de sua função
EscopoPode ser acessado em qualquer lugar do programaAcessível apenas dentro da função
Parâmetros necessáriosNenhuma passagem de parâmetro necessáriaPode ser criado através de parâmetros ou atribuições dentro da função
ArmazenarGerenciado no namespace global (não em local de memória fixo)Armazenado no namespace local da função (stack frame)
ValorAs mudanças afetam todo o programaAs alterações são locais e não afetam outras funções