Introdução à programação e aos algoritmos
2.6.1 Identificadores em Python
Uma vez que você tenha decidido qual formato usar para os nomes de suas variáveis e constantes, use o mesmo para todos os
nomes. Isso cria uma unidade em seu programa e mostra seu estilo de programação. Os programadores de determinada linguagem
de programação podem adotar um padrão informal de nomes. Fica a seu critério seguir ou não a maioria. Nada impede que você
mude o formato entre programas diferentes, mas dentro de um mesmo programa, não mude seu estilo.
Existe uma tendência atual de considerar o estilo CamelCase mais “elegante”, porém um estudo mostrou que o estilo snake
permite uma maior rapidez na identi cação de nomes dentro de um programa, sendo, portanto, mais indicado para novatos em
programação[SM10].
EXERCÍCIO 2.8
Reescreva de forma correta os seguintes identi cadores:
1. duas+palavras
2. 123var
3. campo minado
4. var?
5. Número
2.6.1 IDENTIFICADORES EM PYTHON
Em Python, os nomes, ou identificadores das variáveis, são sensíveis às letras maiúsculas e minúsculas, isto é, Python diferencia se você escreve o nome de uma variável com letra maiúscula ou minúscula. A expressão usada em inglês para isso é case sensitive. Esta expressão não tem uma tradução direta em português. Alguns usam sensível ao caso, em um aportuguesamento que pode confundir, ou sensível à capitalização, que também confunde com outra palavra em português que não tem o mesmo sentido. De qualquer forma, isto quer dizer que os identificadores
umNomeQualquer,
UmNomeQualquer e
UMNomeQualquer
representam três entidades diferentes em Python.
Dica 2.8 – Não use nomes cuja única diferença seja o uso de letras maiúsculas e minúsculas.
Apesar de muitas linguagens fazerem essa distinção, não é uma boa prática usar identi cadores de entidades distintas cuja única
diferença seja a caixa das letras. Uma convenção usada em algumas linguagens é não usar letras maiúsculas para nomes de
variáveis. Mas isso não é su ciente. Ao usar palavras iguais, diferenciadas apenas pelo uso do tipo de letras, você será obrigado a se
lembrar sempre da entidade que está sendo manipulada. A possibilidade de erro aumenta e é melhor evitar essa possível confusão.
Em Python, ao atribuir com o sinal = um valor qualquer a um identificador de variável,
x = 1;
você está criando um objeto na memória com o valor 1 e x é uma referência a esta região da memória. Um identificador é uma referência a um valor; a representação mais próxima seria uma referência para a localização do valor 1 na memória.
Se você em seguida atribui o valor 2 a x:
x = 2;
Python abandona a antiga referência a 1 e cria uma nova, indicando o valor 2:
Aqui há uma sutileza. Note que Python não substituiu o valor 1 pelo valor 2 na memória. Criou outra
região de memória, escreveu ali o valor 2 e fez x referenciar esta nova região, deixando a antiga região de memória sem nenhuma referência.
Quando um objeto na memória fica sem nenhuma referência, a memória que o objeto ocupa é
devolvida para o sistema, que pode reutilizá-la. O objeto assim desaparece de vez da memória. Esse mecanismo é conhecido como coleta de lixo. Para Python, toda memória sem referência é considerada lixo e será devolvida ao sistema como memória livre para ser reutilizada. Ao criar uma nova variável y atribuindo x à mesma,
y = x;
os dois referenciam o mesmo objeto na memória:
Se, em seguida, você atribui novo valor a x:
x = 3;
Python cria um novo objeto na memória e faz x apontar para esse objeto:
Como pode ser notado, para todos os efeitos, o resultado até aqui é exatamente como se houvesse
caixas para os valores e que substituímos simplesmente os valores dentro dessas caixas (veja dica 2.9), mas é importante entender esse funcionamento de Python, pois não será assim para toda variável. Algumas vezes será importante entender que identificadores são referências a objetos dentro da memória, e que esses objetos não podem ser modificados.
Dica 2.9 – Identi cadores em outras linguagens.
Linguagens como C de nem o conceito de “variável” de forma semelhante a Python, porém sua execução na memória se faz de
maneira diferente. Podemos pensar que um nome de variável em C é uma caixa que contém um valor. O sinal de igual (=) é usado
para fazer uma atribuição de um valor a uma variável. Assim, quando você faz, em um programa C, uma de nição do tipo:
int x = 1;
você está criando uma variável x, que pode ser representada por uma caixa, e colocando o valor inteiro 1 nessa caixa.
Neste momento, a caixa x contém o valor 1. Em seguida, ao fazer uma atribuição de outro valor, por exemplo 2,
x = 2;
este novo valor vai ocupar a mesma caixa em que estava 1, apagando o valor antigo. Essa caixa ca com o novo valor:
Se criamos uma nova variável y e atribuímos o valor de x a essa variável,
y = x;
camos com duas caixas: