Da trilha de Python Este conceito ainda não saiu como card do dia. ir para o card de hoje

Python Fundamentos Básico

Variáveis e tipos dinâmicos

Em Python, uma variável é apenas um nome que aponta para um objeto. Diferente de linguagens como C ou Java, você não precisa declarar o tipo: basta atribuir um valor com = e o interpretador descobre o tipo sozinho. Isso é a tipagem dinâmica.

Apesar de dinâmica, a tipagem do Python é forte: operações entre tipos incompatíveis, como somar str com int, geram erro em vez de conversão automática. Para descobrir o tipo de um objeto, use type(); para verificar se ele é de um tipo (ou de uma subclasse), use isinstance().

O valor especial None representa a ausência de valor. Ele é o único objeto do tipo NoneType e costuma ser usado como valor inicial ou retorno de funções que não devolvem nada. Comparações com None devem ser feitas com is ou is not, não com ==.

Pontos-chave

  • Atribuição com = liga um nome a um objeto; o tipo é inferido em tempo de execução.
  • A tipagem é dinâmica (o tipo pode mudar a cada atribuição) e forte (não há coerção implícita entre tipos incompatíveis).
  • type(x) retorna a classe exata; isinstance(x, T) verifica se x é instância de T ou de uma subclasse.
  • None é o único valor de NoneType e indica ausência de valor; compare com is / is not.
  • Use nomes descritivos e evite reutilizar a mesma variável para tipos muito diferentes.
variaveis_dinamicas.py
# Atribuição: o nome aponta para um objeto; o tipo é inferido.
x = 10
print(x, type(x))          # int

# O mesmo nome pode receber outro tipo depois (tipagem dinâmica).
x = "dez"
print(x, type(x))          # str

# Tipagem forte: não há soma implícita entre str e int.
try:
    print(x + 5)
except TypeError as e:
    print("TypeError:", e)

# type() mostra a classe exata; isinstance() aceita subclasses.
print(type(3.14) is float)          # True
print(isinstance(True, int))        # True: bool é subclasse de int

# None representa ausência de valor.
resultado = None
if resultado is None:
    print("ainda não calculado")

# Funções sem return devolvem None implicitamente.
def saudacao(nome):
    print(f"Olá, {nome}!")

retorno = saudacao("Ana")
print(retorno is None)      # True

Exercícios

  1. 1
    Fácil

    Descobrindo tipos

    Crie uma variável valor e atribua a ela, em sequência, um int, um float, uma str e um bool. Para cada atribuição, imprima o valor e o resultado de type(valor).

    Resolver
  2. 2
    Médio

    Verificação segura com isinstance e None

    Escreva uma função descrever(valor) que retorne uma string descrevendo o valor recebido. Se for None, retorne "sem valor". Se for bool, retorne "booleano". Se for int ou float, retorne "número". Se for str, retorne "texto". Para qualquer outro tipo, retorne "desconhecido". Imprima o resultado para os valores None, True, 3, 2.5, "oi" e [1, 2].

    Resolver
  3. 3
    Desafio

    Mini calculadora com tipos dinâmicos

    Implemente uma função calcular(a, op, b) que receba dois valores e um operador ("+", "-", "*", "/"). Se a ou b for None, retorne None. Se algum dos dois não for int ou float (ou for bool), levante TypeError com a mensagem "operandos devem ser números". Se op não for uma das quatro operações, levante ValueError com a mensagem "operador inválido". Em divisão por zero, deixe o ZeroDivisionError propagar. Teste com uma lista de chamadas, capturando exceções e imprimindo o resultado ou a mensagem de erro.

    Resolver

Continue estudando