1. Variáveis e Constantes#

São recursos que permitem atribuirmos nomes a determinados valores. Alguns desse nomes possuem valores que podem variar (variáveis) e outros possuem valores fixos (constantes).

Variáveis#

Variáveis podem ser entendidas como etiquetas que você cola em caixas para guardar diferentes tipos de informações (valores/dados) em seu programam. Em termos mais ciêntíficos, Variáveis são usadas para armazenar informações a serem referenciadas e manipuladas em um programa de computador, tendo como objetivo rotular e armazenar dados na memória.

Em Python, as variáveis não precisam de uma declaração para reservar espaço na memória, a declaração ocorre automaticamente quando você atribui um valor à variável, ou seja, em Python, você cria uma variável simplesmente atribuindo um valor a um nome.

O sinal = é usado como operador de atribuição, ou seja, ele que dá valor a uma variável.

Exemplos:

nome_do_aluno = "Carlos"  # Uma variável do tipo string (texto)
idade = 28                # Uma variável do tipo inteiro (número inteiro)
altura = 1.75             # Uma variável do tipo float (número com casas decimais)
esta_aprovado = True      # Uma variável do tipo booleano (verdadeiro ou falso)

No exemplo acima:

  • nome_do_aluno, idade, altura e esta_aprovado são os nomes das variáveis;

  • O sinal = é o operador de atribuição;

  • Carlos, 28, 1.75 e True são os valores armazenados nessas variáveis, respectivamente.

Uma forma comum de representar variáveis por escrito é colocar o nome com uma flecha (->) apontando para seu valor. Esse tipo de notação é chamado de diagrama de estado porque mostra o estado no qual cada variável está. Exemplo:

nome_do_aluno -> "Carlos"
idade -> 28
altura -> 1.75    
esta_aprovado -> True

Nomeclatura de Variáveis (Convenções PEP 8)#

A comunidade Python segue um guia de estilo chamado PEP 8. Para nomes de variáveis, a norma é:

  • Sempre usar letras minúsculas;

  • Podem haver números no nome de uma variável (ex: lista1), mas nunca carcteres ilegais (ex: @);

  • Palavras separadas por underscores _ para melhorar a legibilidade (isso é chamado de estilo snake_case);

  • Nomes devem ser descritivos. Por exemplo, preco_unitario = 10 é muito mais claro que x = 10. **

  • Evitar usar nomes de funções ou palavras-chave da linguagem como nomes de variáveis (ex:list, str).

Atenção: Nunca use números no começo do nome de uma variável (ex: 1nome), pois gerará um erro de síntaxe.

Tipagem Dinâmica#

Como já foi mencionado anteriormente, Python é dinamicamente tipado. Isso significa que o tipo da variável é determinado pelo valor que ela recebe. Inclusive, pode-se reatribuir um valor de tipo diferente à mesma variável (embora nem sempre seja uma boa prática, pois pode confundir a leitura do código).

Exemplo:

minha_variavel = 10
print(minha_variavel,type(minha_variavel)) # Saída: <class 'int'>

minha_variavel = "Olá, mundo!"
print(minha_variavel,type(minha_variavel)) # Saída: <class 'str'>
10 <class 'int'>
Olá, mundo! <class 'str'>

No exemplo acima:

  • print é uma função que tem como objetivo exibir um resultado na tela. Nesse caso, o resultado é o tipo das variáveis.

    • Os parênteses () indicam que o print é uma função e é onde se define o que deve ser exibido na tela.

  • type é outra função, seu objetivo é retornar o tipo de um objeto. Nesse caso, ele está retornando o tipo da variável minha_variavel.

    • Dentro dos parênteses () é definido qual variável deve ter seu tipo retornado.

  • Nesses resultados, a palavra class (classe) é usada no sentido de categoria; um tipo é uma catagoria de valores.

Note que usamos a mesma variável duas vezes, mas seu valor muda ao decorrer dos exemplos, isso ocorre porque seu valor foi reatribuido, ou seja, demos outro valor a uma variável já existente.

Constantes#

Em muitas linguagens de programação, constantes é uma variável cujo valor não pode ser alterado após sua definição. Em Python, estritamente falando, não existe constantes verdadeiras no sentido de que o interpretador impeça a sua alteração.

No entanto, a convenção na comunidade Python para indicar que uma variável deve ser tratada como uma constante é nomeá-la usando todas as letras maiúsculas, com palavras separadas por underscores _, se necessário.

PI = 3.14159
VELOCIDADE_DA_LUZ_METROS_POR_SEGUNDO = 299792458
TAXA_DE_JUROS_PADRAO = 0.05
NOME_EMPRESA = "Minha Empresa"

Use constantes para valores que são fixos e fundamentais para a lógica do seu programa, como valores matemáticos (pi), configurações fixas, limites, ou qualquer valor que, se alterado, poderia quebrar a funcionalidade esperada.

Importante: Embora você possa tecnicamente reatribuir um valor a PI no código Python (PI = 3.14), isso é considerado má prática e vai contra a intenção original do programador. Ao, ver uma variável em letras maiúsculas, outros desenvolvedores entendem que aquele valor não deve ser modificado.

Parabéns: Você terminou o módulo 01 do curso de introdução à python. Agora você conhece os conceitos de variáveis e constantes em Python, pratique o que foi ensinado no módulo e prepare-se para avançar ainda mais.

Extra: Comentários e Uso da Função print()#

Comentários#

Conforme os programas ficam maiores e mais complicados, eles acabam ficando difíceis de lê. Pensando nisso, podemos usar comentários para explicar o que o programa está fazendo naquele trecho de código, fazendo a leitura ficar mais fácil.

Comentários são linhas de texto que o interpretador Python ignora durante a execução do código, ou seja, eles não interferem nas funcionalidades do programa.

Comentários de linha única#

Usamos o símbolo # (hashtag) no ínicio da linha para comentar. Tudo após o # se transformará em comentário e passará a ser ignorado pelo interpretador.

# Comentario
print("Hello World")
Hello World

Nesse caso o comentário aparece sozinho em uma linha, mas você também pode por comentários no fim de linhas de código.

print("Programar é legal") # Posso comentar aqui
Programar é legal

Comentários de múltiplas linhas#

Caso precisemos criar um comentário que se estenda por mais de uma linha podemos usar aspas triplas (""" ou ''') para criar um comentário que se estende por várias linhas.

"""
Esté é um comentário de multiplas linhas
ele pode ocupar várias linhas
desde que o texto esteja dentro das aspas triplas
"""

print("Olá!")
Olá!

Docstrings#

São comentários de múltiplas linhas usados para documentar funções, classes e módulos. Elas são colocadas imediatamente após a definição do objeto (função, classe, módulo) e são acessadas usando help().

def minha_funcao(param1, param2):
    """
    Esta é uma docstring.
    Ela descreve a função, seus parâmetros e valor de retorno.
    
    :param param1: O primeiro parâmetro da função.
    :param param2: O segundo parâmetro da função.
    :return: O valor de retorno da função.
    """
    return param1 + param2
help(minha_funcao)
Help on function minha_funcao in module __main__:

minha_funcao(param1, param2)
    Esta é uma docstring.
    Ela descreve a função, seus parâmetros e valor de retorno.

    :param param1: O primeiro parâmetro da função.
    :param param2: O segundo parâmetro da função.
    :return: O valor de retorno da função.

Função print()#

Como vimos anteriormente, usar a função print é bem simples de se utilizar, basta declará-la e dentro dos parênteses () indicar os valores que devem ser exibidos.

Qualquer valor pode ser impresso pela função print(), seja string, números, listas e etc.

Sintaxe:

print("objeto1", 22, sep=' ', end='\n')
objeto1 22

Seus parâmetros básicos são:

  • "objeto1", 22: Qualquer valor a ser impresso

  • sep: separador entre os objetos (padrão é espaço " ")

  • end: caractere a ser adicionado ao final da linha (padrão é nova linha '\n')

print("objeto1 ", 33, sep='...', end='--')
objeto1 ...33--

Observe que alterando o separador e o fim, a saida no console/terminal também muda

Imprimir em múltiplas linhas#

Utilizando \n dentro dos objetos de exibição do print(), podemos quebrar a linha de exibição a fazer o próximo objeto ser exibido apenas na próxima linha.

print("Linha 1\nLinha 2\nLinha 3")
Linha 1
Linha 2
Linha 3

Veja que o \n é colocado na parte do texto em que se deseja quebrar a linha, não antes e nem depois, mas exatamente no ponto da quebra.

Imprimir usando variáveis#

Já vimos anteriormente que para exibir uma variável basta colocála dentro do print que ela será exibida, assim:

sobrenome = "Madalena"
print("Maria", sobrenome)
Maria Madalena
Formatar strings F-strings#

Mas também podemos formatar strings (f-strings) para que possamos gerar melhores mensagens no print(), misturando texto com variáveis, expressões e até funções.

Sintaxe:

sobrenome = "Madalena"
print(f"Parabéns, Maria {sobrenome}, por iniciar o curso!")
Parabéns, Maria Madalena, por iniciar o curso!

O f prefixado (no inicio) da string indica que essa será uma string formatada, para que seja possível inserir uma variável, expressão ou função dentro da string é necessário que a mesma esteja entre chaves {} para que o Python a interprete como ela é de fato e não uma string.

Além de formatar o texto, f-strings também conseguem formatar valores númericos, podendo adicionar especificadores, como casas decimais, número de zero à esquerda, porcentagem e etc.

Formatar números com especificadores#
  • Casas decimais: ao final das chaves {} de uma string formatada, use dois pontos : para indicar que irá fazer uma especificação de formatação, em seguida o ponto . junto de algum número para indicar quantas casas decimais devem ser imprimidas na saída.

Se o valor original tiver mais casas decimais que a quantidade especificada, o Python arrendonda o valor

Exemplo:

num = 3.455

print(f"Seu número é: {num:.2f}") # Faz o número imprimido ter apenas 2 casas decimais
Seu número é: 3.46
  • Separador de milhar: Após os dois pontos : selecione entre ponto ou vírgula, a depender do idioma, para indicar como as casas de milahres devem ser separadas.

Exemplo (usando o modelo em inglês):

valor = 14234567
print(f"{valor:,}")  # separador padrão do idioma (ex: vírgula ou ponto)
14,234,567
  • Porcentagem: Após os dois pontos : use o simbolo de porcentagem % para formatar os valores para porcentagem.

Exemplo:

taxa = 0.7855
print(f"Taxa: {taxa:%}")
Taxa: 78.550000%

Para não ter tantas casas decimais, é possível juntar as formatações de casas decimais e porcentagem, apenas adicionando % no lugar do f que teria na formatação de casa decimal.

taxa = 0.5896
print(f"Taxa: {taxa:.2%}")
Taxa: 58.96%
  • Preenchimento: Existe 3 tipos de preenchimentos, o à esquerda, à direita e centralido. Para usá-los basta seguir o exemplo:

x = 10
print(f"{x:*>10}") # Alinha à direita
print(f"{x:*<10}") # Alinha à esquerda
print(f"{x:*^10}") # Centraliza
********10
10********
****10****

Símbolo

Significado

>

Alinha à direita

<

ALinha à esquerda

^

Centraliza

*

Apenas para exibir o espaço ocupado no alinhamento, poderia ser qualquer caractere