Variáveis

Lembre-se que nas seções anteriores dissemos que linguagens de programação possuem três componentes lógicos importantes:

  1. Primitivas da linguagem: Conjuntos de elementos básicos da linguagem, como números, caracteres, operadores aritiméticos, operadores lógicos, etc.

  2. Mecanismos de combinação: Formas de se combinar elementos básicos da linguagem para formar expressões mais complexas.

  3. Mecanismos de abstração: Formas de se usar combinações de elementos da linguagem como se fossem elementos primitivos. Nesta categoria entram variáveis, funções, classes, módulos e bibliotecas.

Na seção anterior, vimos tipos básicos de Python e como criar expressões com operadores desses tipos básicos (primitivas da linguagem e mecanismos de combinação). Além disso, calculamos várias expressões matemáticas, mas não armazenamos o resultado de nenhuma delas. Quando estamos programando, precisamos armazenar os resultados de computações intermediárias e de dados importantes que serão manipulados por nossos programas. O recurso que nos permite fazer isso é chamado de variáveis da linguagem.

O que é uma variável?

Variáveis são a primeira forma de abstração que aprenderemos. Mecanismos de abstração em linguagens de programação nos permitem armazenar resultados e criar procedimentos que serão usados posteriormente. Entretanto, para abstrair qualquer coisa em uma linguagem, é preciso ser capaz de dar um nome a essa coisa. Variáveis são a forma mais simples de se fazer isso. Mais para frente no curso aprenderemos outras formas de abstração (e de como dar nomes a elas) como funções, classes, módulos e bibliotecas.

Uma variável em Python é uma forma de associar um nome a um valor. Veja o exemplo abaixo:

a = 5

Uma forma de ler o código acima é dizer que estamos associando o nome a ao valor 5. Após o código acima ser executado, o nome a se refere (faz referência, está associado) ao valor 5. Isso pode parecer simples, mas é muito importante entendermos como variáveis funcionam em Python.

Além disso, mais de um nome pode estar associado ao mesmo valor, como no exemplo abaixo.

a = 5
b = a
print(b)
5

No exemplo acima, tanto a quanto b fazem referência ao valor 5.

Vejamos outro exemplo, um pouco mais elaborado:

# Cálculo da área de um triangulo.
base = 2
altura = 5
area = (base * altura) / 2
print(area)
5.0

No exemplo acima, criamos uma variável chamada base à qual atribuímos o valor 2, uma variável altura, à qual atribuímos o valor 5, e uma variável area, à qual atribuímos um cálculo envolvendo a base e a altura.

O que o interpretador Python faz ao encontrar cada uma das atribuições de variáveis é explicado em mais detalhes abaixo:

  • base = 2: Ao ler essa sentença, o interpretador cria uma associação entre o nome base e o valor 2. Se mais tarde fizermos base = 30, o interpretador simplesmente atualizará o valor dessa variável (a associação entre o nome e um valor pode ser mudada).

  • altura = 5: idêntico ao item anterior.

  • area = (base * altura) / 2: Ao ler essa sentença, o interpretador recuperas os valores associados aos nomes base e altura e os utiliza no cálculo do valor que será associado ao nome area. Podemos imaginar esse processo acontecendo em etapas, como mostrado abaixo:

    1. area = (base * altura) / 2

    2. area = (2 * altura) / 2

    3. area = (2 * 5) / 2

    4. area = 10 / 2

    5. area = 5.0

No exemplo acima, escolhemos nomes significativos para as variáveis, o que ajuda quem está lendo o código a descobrir (juntamente com o comentário) o que ele está de fato fazendo. É extremamente importante dar nomes significativos às variáveis de seus programas. Eles ficarão muito mais legíveis e fáceis de serem modificados mais tarde. Tem uma piada muito famosa entre programadores que é mais ou menos assim:

Quando escrevi esse código, só Deus e eu sabíamos o que ele fazia. Agora, só Deus sabe.

Duas das maiores causas desse tipo de problema (cômico, mas frequente) são a ausência de nomes significativos para variáveis e a ausência de comentários descritivos do que cada parte do código faz.

Normalmente, pensamos que escrevemos código para ser executado por computadores, o que é verdade, mas pode nos levar a negligenciar aspectos importantes de documentação. Ao invés disso, deveríamos pensar que estamos escrevendo código para ser lido por outros humanos.

Feita essa digressão filosófica, é importante ressaltar que nem toda palavra pode ser usada como nome de uma variável em Python. Existem algumas regras.

Nomes de variáveis em Python podem conter caracteres alfanuméricos (a-z, A-Z, 0-9) e alguns caracteres especiais, como o _.

Por convenção, nomes de variáveis começam com letra minúscula.

Palavras reservadas

Existem palavras reservadas em Python (elas são parte do vocabulário da linguagem), que não podem ser usadas como nomes de variáveis:

and, as, assert, break, class, continue, def, del, elif, else, except,
exec, finally, for, from, global, if, import, in, is, lambda, not, or,
pass, print, raise, return, try, while, with, yield

Na próxima seção veremos mais exemplos do uso de variáveis para armazenar resultados de operações com os tipos básicos da linguagem e entenderemos melhor o funcionamento desses tipos.

Playground

# Use este espaço para praticar o que você aprendeu nesta seção. # Basta digitar o código no espaço abaixo e clicar 'run'.