Capítulo 9, Básico
Comentários e variáveis
Uma variável em Python não é uma caixa que guarda um valor. É um nome que aponta para um objeto, e essa diferença explica muita coisa mais adiante.
Código deste capítulo: basico/cap09_variaveis.py
Comentários
Comentários são notas para quem lê o código. O Python ignora tudo o que vem depois de um #, até o fim da linha.
# Comentário de uma linha
idade = 30 # comentário no fim da linha
"""
Isto é uma string de várias linhas.
O Python a avalia e descarta, mas ela não é um comentário de verdade.
"""
print(idade)
30
Python não tem comentário de várias linhas. O que as pessoas fazem é usar uma string de três aspas como se fosse comentário. Funciona, mas é uma string solta no código. Quando essa string é a primeira instrução de uma função, classe ou módulo, ela vira uma docstring, a documentação oficial daquele objeto:
def area_quadrado(lado):
"""Devolve a área de um quadrado de lado dado."""
return lado * lado
print(area_quadrado.__doc__)
Devolve a área de um quadrado de lado dado.
Eu escrevo comentários para explicar por quê, nunca o quê. O código já diz o que faz. O comentário diz o motivo da decisão.
Variáveis são nomes
Em Python, idade = 30 não "guarda 30 dentro de idade". Ela cria o objeto inteiro 30 e faz o nome idade apontar para ele. O tipo pertence ao objeto, não ao nome. Por isso o mesmo nome pode apontar para tipos diferentes ao longo do programa:
nome = "Ana"
idade = 30
cidade = "Recife"
print(nome, idade, cidade)
valor = 10
print(type(valor))
valor = "dez"
print(type(valor))
Ana 30 Recife
<class 'int'>
<class 'str'>
Essa visão de etiqueta (nome apontando para objeto) vai ser decisiva quando chegarmos em listas e funções. Guarde-a.
Atribuições múltiplas e a troca de valores entre duas variáveis ficam naturais:
a, b = 1, 2
a, b = b, a
print(a, b)
x = y = 0
print(x, y)
2 1
0 0
Nomes válidos e convenções
Um nome começa com letra ou sublinhado, contém letras, números e sublinhados, diferencia maiúsculas de minúsculas e não pode ser uma palavra reservada. O módulo keyword conhece todas as palavras reservadas:
import keyword
print(keyword.iskeyword("class"))
print(keyword.iskeyword("nome"))
print(len(keyword.kwlist) > 30)
True
False
True
| Elemento | Convenção (PEP 8) | Exemplo |
|---|---|---|
| Variáveis e funções | snake_case | preco_total |
| Constantes | MAIUSCULAS_COM_SUBLINHADO | LIMITE_DE_TENTATIVAS |
| Classes | PascalCase | ContaBancaria |
| Uso interno | prefixo _ | _cache |
Python não tem constantes de verdade
Escrever
LIMITE = 3em maiúsculas é um aviso para outras pessoas de que o valor não deve mudar. A linguagem não impede a alteração. Existetyping.Finalpara ferramentas de análise estática, e eu o mostro no capítulo de type hints.
Exercício 1
Troque dois valores sem criar uma terceira variável
Dados a = 3 e b = 7, troque os valores de modo que a termine valendo 7 e b valendo 3.