Bóson Treinamentos em Ciência e Tecnologia

Funções em Python – Escopos de Variáveis

Escopo de Variáveis em Python

Escopos de Variáveis em Python

O escopo de uma variável indica sua visibilidade – ou seja, a partir de onde, no código, a variável é acessível.

Temos dois escopos para variáveis em Python:

Escopo Local

Uma variável local (criada dentro de uma função) existe apenas dentro da função onde foi declarada.

As variáveis locais são inicializadas a cada nova chamada à função.

Desta forma, não é possível acessar seu valor fora da função onde ela foi declarada. Para que possamos interagir com variáveis locais, passamos parâmetros e retornamos valores nas funções.

Escopo Global

Uma variável global é declarada (criada) fora das funções e pode ser acessada por todas as funções presentes no módulo onde é definida.

Variáveis globais também podem ser acessadas por outros módulos, caso eles importem o módulo onde a variável foi definida.

Uma aplicação útil de variáveis globais é o armazenamento de valores constantes no programa, acessíveis a todas as funções.

Sempre devemos tomar cuidado ao alterar o valor de uma global dentro de uma função. Se for atribuído valor a ela, será na verdade criada uma nova variável, local, com o mesmo nome da global.

Exemplo de variáveis globais e locais

VAR_GLOBAL="Bóson Treinamentos em Tecnologia"
def escreve_texto():
    VAR_LOCAL="Fábio dos Reis"
    print("Variável global: ", VAR_GLOBAL)
    print("Variável local: ", VAR_LOCAL)
print("Executando a função escreve_texto:")

escreve_texto()

print("Tentando acessar as variáveis diretamente:")
print("Variável global: ", VAR_GLOBAL)
print("Variável local: ", VAR_LOCAL)

Devemos usar variáveis globais com muito cuidado, pois dificultam o entendimento do código e violam o encapsulamento das funções, podendo serem alteradas por qualquer função, sem que seja simples saber quem a alterou.

Alterando variáveis globais

Se tentarmos alterar o valor de uma variável global dentro de uma função, será criada na verdade uma nova variável local com o mesmo nome da global definida fora da função.

Devemos tomar cuidado com esse comportamento, pois pode ocasionar erros graves na execução do programa.

Vejamos um exemplo:

VAR_GLOBAL="Bóson Treinamentos em Tecnologia"
def escreve_texto():
    VAR_GLOBAL="Planeta Unix"
    VAR_LOCAL="Fábio dos Reis"
    print("Variável global: ", VAR_GLOBAL)
    print("Variável local: ", VAR_LOCAL)
print("Executando a função escreve_texto:")
escreve_texto()
print("Tentando acessar as variáveis diretamente:")
print("Variável global: ", VAR_GLOBAL)

Note o problema: VAR_GLOBAL é alterada dentro da função, mas seu valor permanece o mesmo quando chamada novamente fora da função.

Para que uma variável global tenha seu valor alterado dentro de uma função, devemos lançar mão da declaração global ao declará-la (e antes de inicializá-la!).

Veja como fica a função modificada:

def escreve_texto():
    global VAR_GLOBAL
    VAR_GLOBAL="Planeta Unix"
    VAR_LOCAL="Fábio dos Reis"
    print("Variável global: ", VAR_GLOBAL)
    print("Variável local: ", VAR_LOCAL)

Obs.: Não devemos usar a palavra global na mesma linha onde é atribuído o novo valor à variável global dentro da função.

Sair da versão mobile