Python Iluminado

Tipos de Variáveis

Variáveis são um conceito de extrema importância nas linguagens de programação.

Variáveis são usadas para armazenar informações a serem referenciadas e manipuladas em um programa de computador. Elas também fornecem uma maneira de rotular dados com um nome descritivo, para que nossos programas possam ser entendidos mais claramente pelo leitor e por nós mesmos. É útil pensar nas variáveis como contêineres que contêm informações. Seu único objetivo é rotular e armazenar dados na memória. Esses dados podem ser usados em todo o seu programa.

Atribuindo Valores às Variáveis

As variáveis em Python não precisam declaração explícita para reservar espaço em memória, a declaração ocorre automaticamente quando você atribui um valor à variável. O sinal de (=) é usado para fazer a atribuição de valores.

img

Por exemplo:

nome = 'Gabriel' # Uma string
idade = 33 # Um valor inteiro
altura = 1.75 # Um valor em ponto flutuante
print(nome) # Gabriel
print(idade) # 33
print(altura) # 1.71

Também é possível atribuir múltiplos valores para múltiplas variáveis:

a, b, c = 5, 3.1, "Hello"
print(a) # 5
print(b) # 3.1
print(c) # Hello

Um detalhe importante que não podemos esquecer é que devemos dar nomes que façam sentido as nossas variáveis, existem também notações que são usadas por programadores, por exemplo camelCase, onde a variável começa com uma letra em lowercase, por exemplo:

meuNome = "Gabriel"
minhaIdade = 33
meuEndereco = "Avenida Castelo"

Letras capitalizadas podem ser usadas para declarar constantes, valores que não variam, exemplo:

PI = 3.14
GRAVIDADE = 9.8

Tipos de Variáveis em Python

Em muitas linguagens de programação, as variáveis são statically typed. Isso significa que uma variável é inicialmente declarada como tendo um tipo de dados específico e qualquer valor atribuído a ela durante sua vida útil deve sempre ter esse tipo.

Variáveis em Python não estão sujeitas a esta restrição. No Python, uma variável pode ser atribuída a um valor de um tipo e, posteriormente, re-atribuída a um valor de um tipo diferente:

v = 100
print(v) # 100
v = 'agora sou uma string'
print(v) # agora sou uma string

Referências a Objetos

Python é uma linguagem orientada a objetos. De fato, praticamente todos os itens de dados em um programa Python são objetos de um tipo ou classe específica.

Consideramos agora o seguinte código

print(33)

Ao apresentarmos o interpretador o seguinte statement print(33), ele executará as seguintes ações:

  • Criará um objeto inteiro
  • Dará a ele o valor 33
  • Apresentará ele no console

Podemos usar a função construída type() para confirmarmos

type(33) # <class 'int'>

Uma variável Python é um nome simbólico que é uma referência ou ponteiro para um objeto. Uma vez que um objeto é atribuído a uma variável, você pode se referir ao objeto com esse nome. Mas os dados em si ainda estão contidos no objeto.

Consideramos o seguinte exemplo:

x = 33

Esta atribuição cria um objeto integer com o valor 33 e atribui a variável x para apontar para este objeto

img

Agora vamos considerar o seguinte statement

y = x

Ao executarmos ele, Python não criará outro objeto, ele simplesmente criará um nome simbólico ou referência y, no qual aponta para o mesmo objeto que aponta para x.

img

Imagine agora que façamos essa alteração

y = 13

Dessa vez, Python criará um novo objeto integer com o valor 13, e y se tornará uma referência para ele.

img

Agora imagine que venhamos a executar o seguinte statement

x = 'e'

Python criará um objeto string com o valor 'e' e fará de x uma referência a ele.

img

Como podemos observar, não há mais referência ao objeto integer 33. Quando o número de referências a um objeto cai para zero, ele não está mais acessível. Nesse ponto, sua vida acabou. O Python eventualmente perceberá que é inacessível e recuperará a memória alocada para que possa ser usada para outra coisa. Esse processo é chamado de garbage collection.

Identidade dos Objetos

No Python, todo objeto criado recebe um número que o identifica exclusivamente. É garantido que dois objetos não terão o mesmo identificador durante qualquer período em que sua vida útil se sobreponha.

A função construída id() retorna o identificador inteiro de um objeto. Utilizando a função id() podemos verificar se duas variáveis realmente apontam para o mesmo objeto:

k = 100
t = k
id(k) # 94320283578208
id(t) # 94320283578208

Perceba que ambas possuem o mesmo número identificador, uma vez que elas apontam para o mesmo objeto. Caso façamos uma alteração em t, ele passará a apontar para outro objeto, ganhando assim um id diferente.

t = 50
id(t) # 94320283576608

Deletando uma Variável

O comando del nos permite deletar variáveis.

No exemplo abaixo, declaramos uma variável chamada de numero e atribuímos um valor ponto flutuante a ela, em seguida, utilizamos o comando del para deletá-la.

numero = 12.5
del numero

Se eventualmente tentarmos imprimí-la no console com o comando print() nos será retornado um erro: NameError: name 'numero' is not defined, nos indicando que ela não está mais definida.

Nomes de Variáveis

Uma variável pode ter um nome curto (como por exemplo x ou y) e ou nome mais descritivo (nome, idade, resultado).

Veja as regras para as variáveis

  • Uma variável deve iniciar com uma letra ou um caracter underscore (_)
  • Uma variável não pode começar com um número
  • O nome de uma variável pode conter apenas caracteres alpha-numéricos e underscores (A-z, 0-9, e _)
  • Nomes de variáveis são case sensitive (idade, Idade e IDADE são três variáveis diferentes)

Variáveis Globais

Em Python, uma variável declarada fora da função ou no escopo global é conhecida como variável global. Isso significa que uma variável global pode ser acessada dentro ou fora da função.

Vejamos um exemplo de como uma variável global é criada em Python:

x = 'global'
def imprimir():
print(f'{x} na função imprimir()')
imprimir()
print(f'{x} fora da função')

No código acima, criamos x como uma variável global e definimos imprimir() para imprimir a variável global x. Finalmente, chamamos o imprimir() que imprimirá o valor de x, além disso, usamos o comando print() que também irá imprimir x.

E se desejarmos alterar o valor de x dentro de uma função?

x = 3
def add():
x = x + 5
print(x)
add()

Nos será retornado o seguinte erro:

UnboundLocalError: local variable 'x' referenced before assignment

O output apresenta um erro porque o Python trata x como uma variável local e x também não está definido dentro da função add().

Para solucionar este problema, podemos criar uma variável global dentro de uma função, para isso usamos a palavra-chave global:

x = 3
def add():
global x
x = x + 5
print(x)
add() # 8

Observe que dessa vez a função tem acesso à variável x, tornando assim possível adicionarmos o número 5.

Agora que você já consegue armazenar valores em variáveis, vamos ver os tipos de dados que existem em Python e suas aplicações!