Cheatsheet

← Voltar para página principal
Python Cheatsheet

Guia completo de Python para desenvolvimento moderno e científico

🐍 O que é Python?

📖 Definição

Python é uma linguagem de programação de alto nível, interpretada e multi-paradigma. Conhecida por sua sintaxe clara e legibilidade, é amplamente usada em desenvolvimento web, ciência de dados, automação e inteligência artificial.

💪 Por que aprender?

• Sintaxe limpa e legível
• Multi-paradigma (OO, funcional, procedural)
• Ecossistema rico de bibliotecas
• Ideal para iniciantes
• Comunidade ativa e suporte corporativo

🚀 O que você pode fazer?

• Desenvolvimento web (Django, Flask)
• Ciência de dados e Machine Learning
• Automação e scripts
• Desenvolvimento de APIs
• Análise e visualização de dados

💡 Onde você vai usar:
🌐 Web
Django, Flask, FastAPI
📊 Data Science
Pandas, NumPy, Matplotlib
🤖 Machine Learning
TensorFlow, PyTorch, Scikit
Modern
Async, Type Hints, 3.12+
Filtro ativo:Todos
Total: 14 categoriasBásico: 3Intermediário: 5Avançado: 6

🐍 Variáveis e Tipos

Use quando: Declarando variáveis, trabalhando com dados ou convertendo tipos

📋Declaração de Variáveis

Básico
nome = "João"

# String

Básico
idade = 25

# Inteiro

Básico
altura = 1.75

# Float

Básico
ativo = True

# Booleano

Básico
dados = None

# Nulo

📋Tipos Primitivos

Básico
type("texto")

# <class 'str'>

Básico
type(42)

# <class 'int'>

Básico
type(3.14)

# <class 'float'>

Básico
type(True)

# <class 'bool'>

Básico
type(None)

# <class 'NoneType'>

Básico
type([1, 2, 3])

# <class 'list'>

Básico
type((1, 2, 3))

# <class 'tuple'>

Básico
type({1, 2, 3})

# <class 'set'>

Básico
type({"a": 1})

# <class 'dict'>

📋Conversão de Tipos

Básico
str(123)

# Para string

Básico
int("42")

# Para inteiro

Básico
float("3.14")

# Para float

Básico
bool(1)

# Para boolean

Básico
list("abc")

# Para lista

Básico
tuple([1, 2])

# Para tupla

Básico
set([1, 2, 3])

# Para conjunto

Básico
dict([("a", 1)])

# Para dicionário

📋 Estruturas de Dados

Use quando: Trabalhando com coleções de dados, estruturas, armazenamento

📋Listas (Arrays)

Básico
lista = [1, 2, 3, 4, 5]

# Criar lista

Básico
lista = list(range(10))

# Lista com range

Básico
lista[0]

# Acessar elemento

Básico
lista[-1]

# Último elemento

Básico
lista[1:4]

# Fatia [1:4)

Básico
lista[:3]

# Primeiros 3

Básico
lista[2:]

# Do 2 até o fim

Básico
lista[::2]

# Passo 2

📋Métodos de Listas

Básico
lista.append(6)

# Adicionar no fim

Básico
lista.insert(0, 0)

# Inserir na posição

Básico
lista.remove(3)

# Remover elemento

Básico
lista.pop()

# Remover último

Básico
lista.extend([7, 8])

# Estender lista

Básico
lista.sort()

# Ordenar

Básico
lista.reverse()

# Inverter

Básico
lista.count(3)

# Contar ocorrências

Básico
lista.index(3)

# Índice do elemento

📋Tuplas

Básico
tupla = (1, 2, 3)

# Criar tupla

Básico
tupla = tuple([1, 2, 3])

# Converter lista

Básico
a, b, c = tupla

# Desempacotar

Básico
tupla[0]

# Acessar elemento

Básico
len(tupla)

# Tamanho

📋Dicionários

Básico
pessoa = {"nome": "João", "idade": 25}

# Criar dicionário

Básico
pessoa = dict(nome="João", idade=25)

# Com construtor

Básico
pessoa["nome"]

# Acessar por chave

Básico
pessoa.get("nome")

# Acessar seguro

Básico
pessoa["idade"] = 26

# Modificar valor

Básico
pessoa["cidade"] = "São Paulo"

# Adicionar chave

Básico
del pessoa["idade"]

# Remover chave

Básico
pessoa.keys()

# Lista de chaves

Básico
pessoa.values()

# Lista de valores

Básico
pessoa.items()

# Lista de pares

🔀 Estruturas de Controle

Use quando: Controlando fluxo do programa, repetições, decisões

📋If/Else

Básico
if idade >= 18: print("Maior de idade") else: print("Menor de idade")

# Condicional simples

Básico
if nota >= 7: print("Aprovado") elif nota >= 5: print("Recuperação") else: print("Reprovado")

# Múltiplas condições

Básico
if 18 <= idade <= 65: print("Em idade trabalhativa")

# Condição composta

📋Loops For

Básico
for i in range(5): print(i)

# Loop com range

Básico
for i in range(1, 10, 2): print(i)

# Range com passo

Básico
for item in lista: print(item)

# Iterar lista

Básico
for indice, valor in enumerate(lista): print(indice, valor)

# Com índice

Básico
for chave, valor in dicionario.items(): print(chave, valor)

# Iterar dicionário

📋Loops While

Básico
contador = 0 while contador < 5: print(contador) contador += 1

# Loop condicional

Básico
while True: resposta = input("Digite 'sair' para parar: ") if resposta == "sair": break

# Loop infinito com break

Básico
while True: try: resultado = 10 / 0 except ZeroDivisionError: print("Erro de divisão") break

# Loop com tratamento de erro

📋Break e Continue

Básico
for i in range(10): if i == 5: continue print(i)

# Pular iteração

Básico
for i in range(10): if i == 7: break print(i)

# Interromper loop

⚡ Funções

Use quando: Reutilizando código, organização lógica, modularização

📋Definição Básica

Intermediário
def saudar(nome): return f"Olá, {nome}!"

# Função simples

Intermediário
def calcular_area(base, altura): return (base * altura) / 2

# Com parâmetros

Intermediário
def saudar(nome="Visitante"): return f"Olá, {nome}!"

# Parâmetro padrão

Intermediário
def processar(*args): for arg in args: print(arg)

# Argumentos variáveis

Intermediário
def configurar(**kwargs): for chave, valor in kwargs.items(): print(f"{chave}: {valor}")

# Argumentos nomeados

📋Funções Lambda

Intermediário
soma = lambda a, b: a + b

# Função anônima

Intermediário
quadrado = lambda x: x ** 2

# Expressão lambda

Intermediário
lista.sort(key=lambda x: x[1])

# Chave de ordenação

Intermediário
numeros = list(map(lambda x: x**2, range(10)))

# Map com lambda

Intermediário
pares = list(filter(lambda x: x%2==0, range(10)))

# Filter com lambda

📋Decoradores

Intermediário
def timer(func): def wrapper(*args, **kwargs): import time inicio = time.time() resultado = func(*args, **kwargs) fim = time.time() print(f"Tempo: {fim - inicio:.2f}s") return resultado return wrapper

# Decorador de timer

Intermediário
@timer def calcular_soma(n): return sum(range(n))

# Usando decorador

Intermediário
def log_chamada(func): def wrapper(*args, **kwargs): print(f"Chamando {func.__name__}") return func(*args, **kwargs) return wrapper

# Decorador de log

📋Funções Built-in

Intermediário
print("Hello, World!")

# Imprimir

Intermediário
len([1, 2, 3])

# Tamanho

Intermediário
sum([1, 2, 3, 4])

# Soma

Intermediário
max([1, 5, 3])

# Máximo

Intermediário
min([1, 5, 3])

# Mínimo

Intermediário
abs(-5)

# Valor absoluto

Intermediário
round(3.14159, 2)

# Arredondar

Intermediário
type(42)

# Tipo do dado

Intermediário
isinstance(42, int)

# Verificar tipo

🏗️ Programação Orientada a Objetos

Use quando: Modelando entidades complexas, reutilização código, organização

📋Classes Básicas

Intermediário
class Pessoa: def __init__(self, nome, idade): self.nome = nome self.idade = idade def saudar(self): return f"Olá, sou {self.nome}"

# Classe simples

Intermediário
class Animal: def __init__(self, nome): self.nome = nome def falar(self): raise NotImplementedError("Subclasses devem implementar")

# Classe abstrata

Intermediário
class Contador: def __init__(self): self.valor = 0 def incrementar(self): self.valor += 1 def __str__(self): return f"Contador: {self.valor}"

# Com métodos

📋Herança

Intermediário
class Animal: def __init__(self, nome): self.nome = nome def falar(self): pass class Cachorro(Animal): def falar(self): return "Au au!"

# Herança simples

Intermediário
class Veiculo: def __init__(self, marca): self.marca = marca class Carro(Veiculo): def __init__(self, marca, modelo): super().__init__(marca) self.modelo = modelo

# Chamando super()

Intermediário
class A: def metodo(self): return "A" class B(A): def metodo(self): return super().metodo() + "B"

# Usando super()

📋Métodos Especiais

Intermediário
class Pessoa: def __init__(self, nome): self.nome = nome def __str__(self): return f"Pessoa: {self.nome}" def __repr__(self): return f"Pessoa('{self.nome}')"

# __str__ e __repr__

Intermediário
class Lista: def __init__(self, itens): self.itens = itens def __len__(self): return len(self.itens) def __getitem__(self, indice): return self.itens[indice]

# __len__ e __getitem__

Intermediário
class Conta: def __init__(self, saldo): self.saldo = saldo def __add__(self, valor): return Conta(self.saldo + valor)

# Sobrecarga de operador

📋Propriedades

Intermediário
class Pessoa: def __init__(self, nome): self._nome = nome @property def nome(self): return self._nome @nome.setter def nome(self, valor): self._nome = valor.title()

# Property getter/setter

Intermediário
class Retangulo: def __init__(self, largura, altura): self._largura = largura self._altura = altura @property def area(self): return self._largura * self._altura

# Property calculada

📦 Módulos e Pacotes

Use quando: Organizando código, reutilização, gerenciando dependências

📋Importação

Intermediário
import math

# Importar módulo

Intermediário
import numpy as np

# Com alias

Intermediário
from math import sqrt, pi

# Importar específicos

Intermediário
from datetime import datetime, date

# Múltiplos

Intermediário
import requests import json from bs4 import BeautifulSoup

# Múltiplos módulos

📋Módulos Built-in

Intermediário
import math math.sqrt(16)

# Funções matemáticas

Intermediário
import random random.randint(1, 100)

# Números aleatórios

Intermediário
import datetime datetime.now()

# Data e hora

Intermediário
import os os.listdir(".")

# Sistema operacional

Intermediário
import sys sys.path

# Sistema e caminhos

Intermediário
import json json.loads('{"a": 1}')

# JSON

Intermediário
import re re.findall(r"\d+", "abc123")

# Expressões regulares

📋Criando Módulos

Intermediário
# meu_modulo.py def saudar(nome): return f"Olá, {nome}!" def calcular_area(base, altura): return (base * altura) / 2

# Arquivo de módulo

Intermediário
# main.py import meu_modulo print(meu_modulo.saudar("João")) print(meu_modulo.calcular_area(10, 5))

# Usando módulo

Intermediário
# __init__.py from .funcoes import saudar, calcular_area from .classes import Pessoa

# Pacote com __init__

📋Pip (Gerenciador de Pacotes)

Intermediário
pip install numpy

# Instalar pacote

Intermediário
pip install requests==2.25.1

# Versão específica

Intermediário
pip install -r requirements.txt

# Do arquivo

Intermediário
pip list

# Listar instalados

Intermediário
pip show numpy

# Informações do pacote

Intermediário
pip uninstall numpy

# Desinstalar

Intermediário
pip freeze > requirements.txt

# Gerar requirements

⚠️ Tratamento de Erros

Use quando: Tratando erros, recursos, validações, robustez

📋Try/Except

Intermediário
try: resultado = 10 / 0 except ZeroDivisionError: print("Erro: Divisão por zero") except Exception as e: print(f"Erro genérico: {e}")

# Captura específica e genérica

Intermediário
try: numero = int(input("Digite um número: ")) resultado = 100 / numero except ValueError: print("Erro: Digite um número válido") except ZeroDivisionError: print("Erro: Não pode dividir por zero")

# Múltiplas exceções

Intermediário
try: with open("arquivo.txt", "r") as f: conteudo = f.read() except FileNotFoundError: print("Arquivo não encontrado") except PermissionError: print("Sem permissão")

# Com arquivos

📋Finally

Intermediário
try: arquivo = open("dados.txt", "r") conteudo = arquivo.read() except FileNotFoundError: print("Arquivo não encontrado") finally: if "arquivo" in locals(): arquivo.close()

# Sempre executa

Intermediário
try: conexao = conectar_banco() dados = conexao.consultar() except Exception as e: registrar_erro(e) raise finally: if "conexao" in locals(): conexao.close()

# Limpeza de recursos

📋Raise Personalizadas

Intermediário
class ErroCustomizado(Exception): def __init__(self, mensagem): self.mensagem = mensagem super().__init__(self.mensagem)

# Criar exceção

Intermediário
def validar_idade(idade): if idade < 0: raise ValueError("Idade não pode ser negativa") if idade > 150: raise ValueError("Idade muito alta") return idade

# Validar com raise

Intermediário
try: validar_idade(-5) except ValueError as e: print(f"Erro de validação: {e}")

# Capturar exceção

📋With Statement

Intermediário
with open("arquivo.txt", "r") as f: conteudo = f.read() # Arquivo fechado automaticamente

# Gerenciamento automático

Intermediário
import sqlite3 with sqlite3.connect("banco.db") as conn: cursor = conn.cursor() # Conexão fechada automaticamente

# Com banco de dados

Intermediário
from contextlib import contextmanager @contextmanager def temporizador(): import time inicio = time.time() yield fim = time.time() print(f"Tempo: {fim - inicio:.2f}s") with temporizador(): # Código a ser medido

# Context manager personalizado

📁 Manipulação de Arquivos

Use quando: Processando arquivos, persistência de dados, I/O

📋Leitura de Arquivos

Intermediário
with open("arquivo.txt", "r") as f: conteudo = f.read()

# Ler tudo

Intermediário
with open("arquivo.txt", "r") as f: linhas = f.readlines()

# Ler linhas

Intermediário
with open("arquivo.txt", "r") as f: for linha in f: print(linha.strip())

# Ler linha por linha

Intermediário
with open("dados.json", "r") as f: dados = json.load(f)

# Ler JSON

Intermediário
import csv with open("dados.csv", "r") as f: leitor = csv.reader(f) for linha in leitor: print(linha)

# Ler CSV

📋Escrita de Arquivos

Intermediário
with open("saida.txt", "w") as f: f.write("Hello, World!")

# Escrever texto

Intermediário
with open("linhas.txt", "w") as f: f.writelines(["Linha 1\n", "Linha 2\n"])

# Escrever múltiplas linhas

Intermediário
with open("dados.json", "w") as f: json.dump({"nome": "João", "idade": 25}, f)

# Escrever JSON

Intermediário
import csv dados = [["Nome", "Idade"], ["João", 25], ["Maria", 30]] with open("dados.csv", "w", newline="") as f: escritor = csv.writer(f) escritor.writerows(dados)

# Escrever CSV

📋Manipulação de Diretórios

Intermediário
import os os.listdir(".")

# Listar arquivos

Intermediário
import os os.makedirs("novo_diretorio", exist_ok=True)

# Criar diretório

Intermediário
import os os.path.exists("arquivo.txt")

# Verificar existência

Intermediário
import os os.path.getsize("arquivo.txt")

# Tamanho do arquivo

Intermediário
import os os.remove("arquivo.txt")

# Remover arquivo

Intermediário
import shutil shutil.copy("origem.txt", "destino.txt")

# Copiar arquivo

Intermediário
import shutil shutil.move("antigo.txt", "novo.txt")

# Mover/renomear

📋Pathlib (Moderno)

Intermediário
from pathlib import Path arquivo = Path("dados.txt") conteudo = arquivo.read_text()

# Ler com pathlib

Intermediário
from pathlib import Path arquivo = Path("saida.txt") arquivo.write_text("Hello!")

# Escrever com pathlib

Intermediário
from pathlib import Path caminho = Path("/home/usuario/documentos") arquivo = caminho / "relatorio.txt"

# Construir caminho

Intermediário
from pathlib import Path pasta = Path(".") arquivos_py = pasta.glob("*.py")

# Listar com padrão

🎯 List Comprehensions

Use quando: Processamento de dados, transformações, filtragem

📋Básicas

Avançado
[x**2 for x in range(10)]

# Quadrados de 0-9

Avançado
[x for x in range(20) if x % 2 == 0]

# Números pares

Avançado
[x.upper() for x in ["a", "b", "c"]]

# Transformar strings

Avançado
[(x, x**2) for x in range(5)]

# Tuplas

📋Aninhadas

Avançado
[[x*y for y in range(3)] for x in range(3)]

# Matriz 3x3

Avançado
[[x, y] for x in range(3) for y in range(3) if x + y == 3]

# Com condição

Avançado
palavras = ["python", "java", "javascript"] [[letra.upper() for letra in palavra] for palavra in palavras]

# Processar strings

📋Com Funções

Avançado
import math [math.sqrt(x) for x in range(1, 26) if x % 5 == 0]

# Com função

Avançado
def eh_primo(n): return n > 1 and all(n % i != 0 for i in range(2, int(n**0.5) + 1)) [ x for x in range(2, 50) if eh_primo(x) ]

# Números primos

⚡ Geradores e Iteradores

Use quando: Processamento de grandes volumes, memória eficiente

📋Geradores

Avançado
def contar_ate(n): for i in range(n): yield i for num in contar_ate(5): print(num)

# Gerador simples

Avançado
def fibonacci(): a, b = 0, 1 while True: yield a a, b = b, a + b

# Sequência infinita

Avançado
quadrados = (x**2 for x in range(10))

# Generator expression

📋Iteradores

Avançado
class Contador: def __init__(self, limite): self.limite = limite self.atual = 0 def __iter__(self): return self def __next__(self): if self.atual >= self.limite: raise StopIteration valor = self.atual self.atual += 1 return valor

# Implementar iterador

Avançado
for i in Contador(5): print(i)

# Usar iterador

📋Itertools

Avançado
import itertools list(itertools.combinations([1, 2, 3], 2))

# Combinações

Avançado
import itertools list(itertools.permutations([1, 2, 3], 2))

# Permutações

Avançado
import itertools list(itertools.product([1, 2], ["a", "b"]))

# Produto cartesiano

Avançado
import itertools list(itertools.cycle([1, 2, 3]))[:6]

# Ciclo infinito

🎨 Decoradores Avançados

Use quando: Metaprogramação, padrões de projeto, extensibilidade

📋Decoradores com Parâmetros

Avançado
def repetir(vezes): def decorador(func): def wrapper(*args, **kwargs): resultado = None for _ in range(vezes): resultado = func(*args, **kwargs) return resultado return wrapper return decorador @repetir(3) def saudar(): print("Olá!")

# Com parâmetros

📋Decoradores de Classe

Avançado
def adicionar_metodo(classe): def novo_metodo(self): return "Método adicionado" classe.novo_metodo = novo_metodo return classe @adicionar_metodo class MinhaClasse: pass

# Modificar classe

📋Property Avançada

Avançado
class Pessoa: def __init__(self): self._idade = 0 @property def idade(self): return self._idade @idade.setter def idade(self, valor): if valor < 0: raise ValueError("Idade não pode ser negativa") self._idade = valor

# Com validação

📋Singleton

Avançado
def singleton(classe): instancias = {} def obter_instancia(*args, **kwargs): if classe not in instancias: instancias[classe] = classe(*args, **kwargs) return instancias[classe] return obter_instancia @singleton class BancoDeDados: def __init__(self): self.conexao = None

# Padrão Singleton

🔢 Programação Funcional

Use quando: Processamento de dados, pipelines, código imutável

📋Funções de Ordem Superior

Avançado
def aplicar_operacao(lista, operacao): return [operacao(x) for x in lista] dobrar = lambda x: x * 2 resultado = aplicar_operacao([1, 2, 3], dobrar)

# Função como parâmetro

Avançado
def criar_multiplicador(fator): return lambda x: x * fator dobrar = criar_multiplicador(2) triplicar = criar_multiplicador(3)

# Closure

📋Map, Filter, Reduce

Avançado
numeros = [1, 2, 3, 4, 5] quadrados = list(map(lambda x: x**2, numeros))

# Map

Avançado
numeros = [1, 2, 3, 4, 5, 6] pares = list(filter(lambda x: x % 2 == 0, numeros))

# Filter

Avançado
from functools import reduce numeros = [1, 2, 3, 4, 5] soma = reduce(lambda x, y: x + y, numeros)

# Reduce

📋Funções Parciais

Avançado
from functools import partial def potencia(base, expoente): return base ** expoente dobro = partial(potencia, 2) cubo = partial(potencia, 3)

# Função parcial

📋Composição de Funções

Avançado
def compor(f, g): return lambda x: f(g(x)) dobrar = lambda x: x * 2 incrementar = lambda x: x + 1 dobrar_e_incrementar = compor(incrementar, dobrar)

# Composição

🧪 Testes Unitários

Use quando: Desenvolvimento orientado a testes, qualidade de código

📋unittest

Avançado
import unittest class TestCalculadora(unittest.TestCase): def test_soma(self): self.assertEqual(2 + 2, 4) def test_divisao_por_zero(self): with self.assertRaises(ZeroDivisionError): resultado = 10 / 0 if __name__ == "__main__": unittest.main()

# Teste básico

📋pytest

Avançado
def test_soma(): assert 2 + 2 == 4 def test_lista_vazia(): assert len([]) == 0 def test_erro_divisao(): with pytest.raises(ZeroDivisionError): resultado = 10 / 0

# Testes com pytest

📋Mock

Avançado
from unittest.mock import Mock, patch def test_api_request(): with patch("requests.get") as mock_get: mock_response = Mock() mock_response.json.return_value = {"status": "ok"} mock_get.return_value = mock_response resultado = fazer_requisicao_api() assert resultado["status"] == "ok"

# Mock de API

📋Fixtures

Avançado
@pytest.fixture def cliente_db(): # Configuração do banco de teste conexao = conectar_banco_teste() yield conexao # Limpeza após o teste conexao.close() def test_inserir_usuario(cliente_db): usuario = {"nome": "João", "email": "joao@email.com"} resultado = cliente_db.inserir(usuario) assert resultado["sucesso"] == True

# Fixture pytest

⚡ Performance e Otimização

Use quando: Aplicações críticas, processamento intenso, otimização

📋Profiling

Avançado
import cProfile import time def funcao_lenta(): time.sleep(1) return "Pronto" cProfile.run("funcao_lenta()")

# Profile básico

Avançado
import timeit tempo = timeit.timeit( "sum(range(1000))", number=1000 ) print(f"Tempo médio: {tempo/1000:.6f}s")

# Medir tempo

📋Otimizações

Avançado
# Lento resultado = [] for i in range(10000): resultado.append(i * 2) # Rápido resultado = [i * 2 for i in range(10000)]

# List comprehension

Avançado
# Lento if chave in dicionario: valor = dicionario[chave] else: valor = valor_padrao # Rápido valor = dicionario.get(chave, valor_padrao)

# get() vs in

📋Memória

Avançado
import sys lista = list(range(1000)) print(f"Tamanho: {sys.getsizeof(lista)} bytes")

# Medir memória

Avançado
import gc # Forçar coleta de lixo gc.collect() print(f"Objetos coletados: {gc.garbage}")

# Garbage collector

📋Numba e Cython

Avançado
from numba import jit @jit def soma_rapida(n): total = 0 for i in range(n): total += i return total

# Numba JIT

🤝 Contribuindo

Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.

Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕