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

Escopos de Variáveis em Python

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

Temos dois escopos para variáveis em Python:

  • Escopo Global
  • Escopo Local

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.

Sobre Fábio dos Reis (1173 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*