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