Neste artigo, você aprenderá sobre a palavra-chave global, a variável global e quando usar palavras-chave globais.
Antes de ler este artigo, certifique-se de ter algumas noções básicas de variáveis globais, locais e não locais do Python.
Qual é a palavra-chave global
Em Python, global
palavra-chave permite que você modifique a variável fora do escopo atual. É usado para criar uma variável global e fazer alterações na variável em um contexto local.
Regras da palavra-chave global
As regras básicas para global
palavras-chave em Python são:
- Quando criamos uma variável dentro de uma função, ela é local por padrão.
- Quando definimos uma variável fora de uma função, ela é global por padrão. Você não tem que usar
global
palavras-chave. - Usamos
global
palavra-chave para ler e escrever uma variável global dentro de uma função. - O uso de
global
palavras-chave fora de uma função não tem efeito.
Uso de palavra-chave global
Vamos dar um exemplo.
Exemplo 1: Acessando a variável global de dentro de uma função
c = 1 # global variable def add(): print(c) add()
Quando executamos o programa acima, a saída será:
1
No entanto, podemos ter alguns cenários em que precisamos modificar a variável global de dentro de uma função.
Exemplo 2: Modificando a variável global de dentro da função
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Quando executamos o programa acima, a saída mostra um erro:
UnboundLocalError: variável local 'c' referenciada antes da atribuição
Isso ocorre porque só podemos acessar a variável global, mas não podemos modificá-la de dentro da função.
A solução para isso é usar a global
palavra - chave.
Exemplo 3: Mudando a variável global de dentro de uma função usando global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Quando executamos o programa acima, a saída será:
Dentro de add (): 2 In main: 2
No programa acima, definimos c como uma palavra-chave global dentro da add()
função.
Então, incrementamos a variável c por 1
, ie c = c + 2
. Depois disso, chamamos a add()
função. Finalmente, imprimimos a variável global c.
Como podemos ver, a mudança também ocorreu na variável global fora da função c = 2
,.
Variáveis globais em módulos Python
Em Python, criamos um único módulo config.py
para conter variáveis globais e compartilhar informações entre módulos Python dentro do mesmo programa.
Aqui está como podemos compartilhar variáveis globais entre os módulos Python.
Exemplo 4: compartilhar uma variável global entre os módulos Python
Crie um config.py
arquivo para armazenar variáveis globais
a = 0 b = "empty"
Crie um update.py
arquivo para alterar as variáveis globais
import config config.a = 10 config.b = "alphabet"
Crie um main.py
arquivo para testar as mudanças no valor
import config import update print(config.a) print(config.b)
Quando executamos o main.py
arquivo, a saída será
10 alfabeto
No exemplo acima, criamos três arquivos: config.py
, update.py
, e main.py
.
O módulo config.py
armazena variáveis globais de a e b. No update.py
arquivo, importamos o config.py
módulo e modificamos os valores de a e b. Da mesma forma, no main.py
arquivo, importamos ambos config.py
e o update.py
módulo. Finalmente, imprimimos e testamos os valores das variáveis globais, sejam elas alteradas ou não.
Global em funções aninhadas
Aqui está como você pode usar uma variável global em função aninhada.
Exemplo 5: usando uma variável global em função aninhada
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
O resultado é:
Antes da barra de chamada: 20 Barra de chamada agora Após barra de chamada: 20 x no principal: 25
No programa acima, declaramos uma variável global dentro da função aninhada bar()
. Dentro da foo()
função, x não tem efeito sobre a palavra-chave global.
Antes e depois da chamada bar()
, a variável x assume o valor da variável local ie x = 20
. Fora da foo()
função, a variável x terá o valor definido na bar()
função ie x = 25
. Isso ocorre porque usamos a global
palavra-chave em x para criar uma variável global dentro da bar()
função (escopo local).
Se fizermos alguma mudança dentro da bar()
função, as alterações aparecem fora do âmbito local, ie foo()
.