Pular para o conteúdo

    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.

    basico/cap09_variaveis.pylinhas 10 a 17
    # 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)
    
    Saída
    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:

    basico/cap09_variaveis.pylinhas 19 a 24
    def area_quadrado(lado):
        """Devolve a área de um quadrado de lado dado."""
        return lado * lado
    
    
    print(area_quadrado.__doc__)
    
    Saída
    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:

    basico/cap09_variaveis.pylinhas 29 a 37
    nome = "Ana"
    idade = 30
    cidade = "Recife"
    print(nome, idade, cidade)
    
    valor = 10
    print(type(valor))
    valor = "dez"
    print(type(valor))
    
    Saída
    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:

    basico/cap09_variaveis.pylinhas 39 a 44
    a, b = 1, 2
    a, b = b, a
    print(a, b)
    
    x = y = 0
    print(x, y)
    
    Saída
    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:

    basico/cap09_variaveis.pylinhas 49 a 53
    import keyword
    
    print(keyword.iskeyword("class"))
    print(keyword.iskeyword("nome"))
    print(len(keyword.kwlist) > 30)
    
    Saída
    True
    False
    True
    
    ElementoConvenção (PEP 8)Exemplo
    Variáveis e funçõessnake_casepreco_total
    ConstantesMAIUSCULAS_COM_SUBLINHADOLIMITE_DE_TENTATIVAS
    ClassesPascalCaseContaBancaria
    Uso internoprefixo __cache

    Python não tem constantes de verdade

    Escrever LIMITE = 3 em maiúsculas é um aviso para outras pessoas de que o valor não deve mudar. A linguagem não impede a alteração. Existe typing.Final para 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.