Escopos de Variáveis em Python

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 4

Fatec Ourinhos – curso de Ciência de dados

Escopos de Variáveis em Python


O escopo de uma variável indica sua visibilidade, ou seja, em quais partes do programa
esta variável é visível

Temos dois escopos para variáveis em Python:

Escopo Local e o escopo Global

Escopo Local
Uma variável local é uma variável criada dentro de uma função, no programa esta variável
só é visível dentro da função, ou seja, você não vai conseguir manipular esta variável em
qualquer parte do programa que não seja a função onde ela está contida.

Para exemplificar, imagine o programa como uma caixa fechada, você só consegue interagir
com programa de dois modos: passar uma informação para o programa através de uma
entrada de dados “input” de variáveis (valor numérico, caractere etc.) ou receber o
resultado “output” através de um print por exemplo.

Agora pense na função também como uma caixa, só que esta caixa (função) está dentro da
caixa maior que é nosso programa. Lembre se que a caixa função também está fechada
impossibilitando o programa saber o que tem dentro dela. Esta caixa (função) assim como
a caixa (programa), só possibilita dois modos de interação, input através de argumentos,
e o output que é retorno da função. Por isso, podemos dizer que as variáveis dentro de
uma função são locais, só existem no contesto da função e não são visíveis ao programa
principal. Este conceito tem o nome de encapsulamento

Concluindo, 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 fora das funções e pode ser acessada por todas as
funções presentes, ou seja, ela é visível para todas as partes do programa, 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.

Por Eder Luiz Alves Pinto 2021


Fatec Ourinhos – curso de Ciência de dados

Exemplo de variáveis globais e locais


VAR_GLOBAL = "Fatec Ourinhos"

def escreveTexto():
VAR_LOCAL="Estrutura de dados"
print("Executando a função escreveTexto:")
print("Variável global: ", VAR_GLOBAL)
print("Variável local: ", VAR_LOCAL)

escreveTexto()

print("Tentando acessar as variáveis diretamente:")


print("Variável global: ", VAR_GLOBAL)
print("Variável local: ", VAR_LOCAL)

Vejamos a Saída:

Executando a função escreveTexto:


Variável global: Fatec Ourinhos
Variável local: Estrutura de dados
Tentando acessar as variáveis diretamente:
Variável global: Fatec Ourinhos
Traceback (most recent call last):
File
"E:/Users/ederlap/Documents/personal/python/PycharmProjects/guupe/Outr
os/escola.py", line 14, in <module>
print("Variável local: ", VAR_LOCAL)
NameError: name 'VAR_LOCAL' is not defined
Process finished with exit code 1

O compilador parou na linha 14 reclamando de um erro durante a compilação, ele tentou


executar o comando “print("Variável local: ", VAR_LOCAL)” mas não conseguiu.

Vixi deu pau, e agora? Se olharmos a penúltima linha veremos a seguinte mensagem :
“NameError: name 'VAR_LOCAL' is not defined”. O compilador está dizendo que
esta variável não foi declara no programa.

Mas como assim? É logico que está, estou vendo-a bem ali! dentro da função, porque o
programa está retornado este erro?
Pense um pouco padawan ... Acho que já descobriu né.
Isso mesmo, a variável “VAR_LOCAL” só existe no escopo da função escreveTesto(), ela
é uma variável local dentro da função, o programa principal não sabe que esta variável
existe, lembra das caixas?

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

Por Eder Luiz Alves Pinto 2021


Fatec Ourinhos – curso de Ciência de dados

Alterando variáveis globais


Vejamos um exemplo:

VAR_GLOBAL = "Fatec Ourinhos"

def escreveTexto():
VAR_GLOBAL = "Fatec São Paulo"
VAR_LOCAL = "Estrutura de dados"
print("Variável global: ", VAR_GLOBAL)
print("Variável local: ", VAR_LOCAL)

print("Executando a função escreveTexto:")


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

Na saída temos:

Executando a função escreveTexto:


Variável global: Fatec São Paulo
Variável local: Estrutura de dados
Tentando acessar as variáveis diretamente:
Variável global: Fatec Ourinhos

Ué a variável global tem dois valores diferentes? Hum ...

Percebe-se que a variável VAR_GLOBAL é alterada dentro da função, mas seu valor não
é alterado quando é chamada novamente fora da função.

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.

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:

Por Eder Luiz Alves Pinto 2021


Fatec Ourinhos – curso de Ciência de dados

def escreveTexto():
global VAR_GLOBAL
VAR_GLOBAL="Fatec Ourinhos"
VAR_LOCAL="Estrutura de Dados"
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.

Bom, espero ter ajudado pessoal!

Por Eder Luiz Alves Pinto 2021

Você também pode gostar