Python Módulos da Biblioteca Padrão

O Python vem com "pilhas incluídas": junto com ele, chegam centenas de módulos prontos, a chamada biblioteca padrão (em inglês, standard library). Para usar um deles basta um import, sem instalar nada (aula Módulos e import). Esta página reúne os mais úteis no dia a dia, agrupados por assunto, com uma linha sobre o que cada um faz, um exemplo com o resultado de verdade e o link para a aula, quando há uma. A lista completa está na documentação oficial.

Como ler as tabelas
  • Cada exemplo supõe que o módulo já foi importado: o exemplo math.sqrt(16) vem depois de um import math.
  • O resultado é o que o Python 3.14.4 respondeu no computador da Ana, escrito como o modo interativo mostra (textos entre aspas).
  • Quando o resultado muda a cada execução (sorteios, hora, nomes de pasta temporária), a tabela avisa.
  • A marca (não no editor) quer dizer que aquilo não funciona no editor do guia, que roda o Python dentro do navegador. No terminal, funciona.

Pule direto para o grupo:


Números e contas

MóduloPara que serveExemploResultadoAula
mathFunções matemáticas: raiz, arredondar para cima e para baixo, π, fatorial…math.sqrt(16)4.0O Módulo math
math.ceil(4.1), math.floor(4.9)5, 4
math.pi3.141592653589793
Comparar float sem cair no problema do 0.1 + 0.2math.isclose(0.1 + 0.2, 0.3)TrueNúmeros
randomSorteios: números, itens de uma lista, embaralharrandom.randint(1, 6)um número de 1 a 6 (muda a cada vez)O Módulo random
random.choice(["arroz", "feijão", "café"])um dos três (muda a cada vez)
statisticsMédia, mediana, moda, desvio padrãostatistics.mean([7.5, 8.0, 6.5, 9.0])7.75—
statistics.median([7.5, 8.0, 6.5, 9.0])7.75
statistics.mode(["P", "M", "M", "G"])'M'
decimalNúmeros decimais exatos, para dinheiro (0.1 + 0.2 dá 0.30000000000000004 com float)Decimal("0.1") + Decimal("0.2")Decimal('0.3')—
fractionsFrações exatasFraction(1, 3) + Fraction(1, 6)Fraction(1, 2)—

(Decimal e Fraction vêm de from decimal import Decimal e from fractions import Fraction.)


Textos

MóduloPara que serveExemploResultadoAula
stringConstantes com letras, dígitos e pontuação; o Template com $nomestring.ascii_uppercase'ABCDEFGHIJKLMNOPQRSTUVWXYZ'Métodos de String
string.Template("Olá, $nome!").substitute(nome="Ana")'Olá, Ana!'
reExpressões regulares: procurar padrões num textore.findall(r"\d+", "Rua 7, casa 42, CEP 64000")['7', '42', '64000']Expressões Regulares
textwrapQuebrar um texto longo em linhas, ou encurtá-lotextwrap.wrap("A padaria do bairro abre cedo todos os dias", width=15)['A padaria do', 'bairro abre', 'cedo todos os', 'dias']—
textwrap.shorten("A padaria do bairro abre cedo todos os dias", width=25)'A padaria do bairro [...]'
unicodedataInformações sobre cada caractere; tirar acentosunicodedata.normalize("NFD", "ação").encode("ascii", "ignore").decode()'acao'Caracteres de Escape
difflibComparar textos; achar a palavra "mais parecida" (para um "você quis dizer…?")difflib.get_close_matches("feijao", ["feijão", "arroz", "macarrão"])['feijão']—

Para formatar números e datas dentro de textos, você não precisa de módulo: veja a Referência de Formatação.


Datas e tempo

MóduloPara que serveExemploResultadoAula
datetimeDatas, horas, contas com datasdatetime.date(2026, 12, 25) - datetime.date(2026, 10, 18)datetime.timedelta(days=68) (68 dias até o Natal)Datas e Horas
datetime.datetime(2026, 10, 18, 14, 30) + datetime.timedelta(hours=3)datetime.datetime(2026, 10, 18, 17, 30)
Dia da semana (0 = segunda, 6 = domingo)datetime.date(2026, 10, 18).weekday()6
A data de hoje, a hora de agoradatetime.date.today(), datetime.datetime.now()muda a cada dia (e a cada segundo)
timeEsperar alguns segundos; medir tempotime.sleep(2)o programa para 2 segundos—
time.time()os segundos desde 1/1/1970, um float (muda sempre)
calendarCalendários: ano bissexto, dias do mêscalendar.isleap(2028)True—
Em que dia da semana o mês começa e quantos dias temcalendar.monthrange(2026, 2)(calendar.SUNDAY, 28)
zoneinfoFusos horáriosdatetime.datetime(2026, 10, 18, 14, 30, tzinfo=zoneinfo.ZoneInfo("America/Sao_Paulo")).isoformat()'2026-10-18T14:30:00-03:00'Datas e Horas

Coleções e funções

MóduloPara que serveExemploResultadoAula
collectionsColeções especiais. Counter conta quantas vezes cada item aparececollections.Counter("banana")Counter({'a': 3, 'n': 2, 'b': 1})O Módulo collections
collections.Counter(["P", "M", "M", "G"]).most_common(1)[('M', 2)]
defaultdict: um dicionário que cria a chave sozinho; também deque, namedtuplecollections.defaultdict(int)defaultdict(<class 'int'>, {})
itertoolsFerramentas para laços: combinações, permutações, juntar, acumularlist(itertools.combinations([1, 2, 3], 2))[(1, 2), (1, 3), (2, 3)]O Módulo itertools
list(itertools.permutations("ABC", 2))[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
list(itertools.accumulate([10, 20, 30]))[10, 30, 60]
functoolsFerramentas para funções: reduce, lru_cache (guardar resultados), partialfunctools.reduce(operator.mul, [1, 2, 3, 4])24Decoradores
operatorOs operadores (+, *, []) como funções, bons para key=sorted([("Ana", 9), ("Bia", 7)], key=operator.itemgetter(1))[('Bia', 7), ('Ana', 9)]Ordenando Listas
heapqOs menores (ou maiores) itens, sem ordenar tudoheapq.nsmallest(2, [30, 4, 12, 8])[4, 8]—
bisectEm que posição um valor entra numa lista já ordenadabisect.bisect([0, 5, 7, 9], 8)3—
copyCópia rasa (copy) e cópia profunda (deepcopy)copy.deepcopy([[1, 2], [3]])[[1, 2], [3]] (uma lista nova, com listas novas dentro)Cópia Rasa e Profunda
dataclassesClasses que só guardam dados, sem escrever o __init__@dataclasses.dataclass numa classe ProdutoProduto(nome='café', preco=18.5)Dataclasses
enumUma lista fixa de opções com nome (cores, estados)class Cor(enum.Enum): VERDE = 1 e Cor(1)Cor.VERDEEnum
typingTipos extras para as dicas de tipo (Any, Callable, Literal…)def f(x: typing.Any) -> None:(só uma dica; não muda o que o programa faz)Dicas de Tipo

Arquivos e pastas

MóduloPara que serveExemploResultadoAula
pathlibCaminhos de arquivos e pastas, do jeito modernopathlib.Path("/home/ana/fotos/praia.jpg").name'praia.jpg'Pastas e Caminhos
pathlib.Path("/home/ana/fotos/praia.jpg").parentPosixPath('/home/ana/fotos')
pathlib.Path("notas.txt").suffix'.txt'
A pasta pessoalpathlib.Path.home()PosixPath('/home/ana')
os / os.pathO jeito antigo de lidar com caminhos; a pasta atualos.path.join("fotos", "praia.jpg")'fotos/praia.jpg'Os Módulos os e sys
os.getcwd()'/home/ana'
shutilCopiar, mover e apagar arquivos e pastas inteirasshutil.copy("notas.txt", "copia.txt")cria copia.txt igual ao original—
globListar arquivos com curinga (*.txt)sorted(glob.glob("*.toml"))[] (não havia nenhum .toml na pasta)Pastas e Caminhos
tempfileArquivos e pastas temporários, que somem no fimwith tempfile.TemporaryDirectory() as pasta:uma pasta em /tmp/ com nome sorteado (muda sempre)—
zipfileCriar e ler arquivos .zipzipfile.ZipFile("pacote.zip").namelist()['notas.txt']—
gzipCompactar e descompactar no formato .gzgzip.decompress(gzip.compress(b"oi"))b'oi'—

Formatos de dados

MóduloPara que serveExemploResultadoAula
jsonLer e escrever JSON, o formato de dados da webjson.dumps({"nome": "Ana", "idade": 30})'{"nome": "Ana", "idade": 30}'JSON
Acentos legíveis no arquivojson.dumps({"nome": "Conceição"}, ensure_ascii=False)'{"nome": "Conceição"}'
De texto para dicionáriojson.loads('{"preco": 5.5}')["preco"]5.5
csvPlanilhas em texto, separadas por vírgulalist(csv.reader(["nome,nota", "Ana,9"]))[['nome', 'nota'], ['Ana', '9']]Arquivos CSV
sqlite3Um banco de dados SQL completo, num arquivo sósqlite3.connect(":memory:").execute("SELECT 2 + 3").fetchone()(5,)Python com Banco de Dados
A versão do SQLite que veio juntosqlite3.sqlite_version'3.46.1' no Ubuntu da Ana (no editor do guia, outra)
tomllibLer arquivos de configuração .tomltomllib.loads('nome = "Ana"\nidade = 30'){'nome': 'Ana', 'idade': 30}—
base64Transformar bytes em texto "seguro" (para e-mail, web) e voltarbase64.b64encode(b"Ana")b'QW5h'—

Sistema e programas

MóduloPara que serveExemploResultadoAula
sysO próprio Python: versão, argumentos do programa (sys.argv), sair (sys.exit)sys.version_info[:2](3, 14)Os Módulos os e sys
osO sistema operacional: variáveis de ambiente, pastas, processosos.environ["HOME"]'/home/ana'Os Módulos os e sys
subprocessRodar outros programas do computador (não no editor)subprocess.run(["echo", "oi"], capture_output=True, text=True).stdout'oi\n'Rodando Outros Programas
argparseOpções de linha de comando (--ajuda, -v…)p.add_argument("nome") e p.parse_args(["Ana"])Namespace(nome='Ana')argparse
loggingMensagens de registro (avisos, erros), melhores que printlogging.warning("estoque baixo: %s", "café")mostra WARNING:root:estoque baixo: cafélogging
platformInformações sobre a máquina e o Pythonplatform.python_version()'3.14.4'—
shlexDividir uma linha de comando como o terminal divideshlex.split('cp "minhas fotos" backup')['cp', 'minhas fotos', 'backup']—
threadingFazer coisas "ao mesmo tempo", com threads (não no editor)threading.Thread(target=print, args=("da thread",)).start()mostra da thread—
asyncioProgramação assíncrona: esperar várias coisas sem travar (async/await)asyncio.run(dizer()), com dizer uma async def que devolve "pronto"'pronto'Programação Assíncrona
venvAmbientes virtuais, usado pelo terminal: python3 -m venv .venv (não no editor)—cria a pasta .venvAmbientes Virtuais

Internet e segurança

MóduloPara que serveExemploResultadoAula
urllib.parseMontar e desmontar endereços da weburllib.parse.quote("pão de queijo")'p%C3%A3o%20de%20queijo'—
urllib.parse.urlparse("https://exemplo.com/busca?q=pão").query'q=pão'
urllib.requestBaixar páginas e arquivos da internet (não no editor: sem rede)urllib.request.urlopen("https://…")a resposta do site—
htmlEscapar textos para pôr numa página HTMLhtml.escape("<b>Ana & Bia</b>")'&lt;b&gt;Ana &amp; Bia&lt;/b&gt;'—
http.serverUm servidor web simples, pelo terminal: python3 -m http.server—serve os arquivos da pasta em http://localhost:8000—
hashlibResumos criptográficos (SHA-256, MD5): conferir se um arquivo mudouhashlib.sha256(b"Ana").hexdigest()[:16]'dea210f058b407db' (os 16 primeiros caracteres)—
secretsSorteios seguros, para senhas e códigos (o random não serve para isso)secrets.token_hex(8)16 caracteres hexadecimais sorteados (muda sempre)O Módulo random
uuidIdentificadores únicosuuid.uuid5(uuid.NAMESPACE_DNS, "exemplo.com")UUID('3d47b575-50ba-5ea3-80b4-5f4b1f98bec0')—
uuid.uuid4()um identificador sorteado (muda sempre)

Testes e depuração

MóduloPara que serveExemploResultadoAula
unittestTestes automáticos, em classespython3 -m unittestroda os testes e mostra OK ou as falhasTestes
doctestTesta os exemplos >>> escritos nas docstringspython3 -m doctest arquivo.pysem saída quando tudo passaTestes, Docstrings
pdbO depurador: parar o programa e examinar as variáveisbreakpoint() no meio do códigoabre o prompt (Pdb)Depurando com pdb
timeitMedir quanto tempo um trecho levapython3 -m timeit "sum(range(1000))"o tempo médio (muda de computador para computador)—
keywordAs palavras reservadas do Pythonkeyword.iskeyword("for")TruePalavras-chave

Novidades do Python 3.14 3.14

MóduloPara que serveExemploResultadoAula
compression.zstdCompactação no formato Zstandard (.zst), rápida e moderna. O novo pacote compression também reúne gzip, bz2, lzma e zlibzstd.decompress(zstd.compress(b"oi")), com import compression.zstd as zstdb'oi'Novidades
annotationlibExaminar as dicas de tipo, agora calculadas só quando alguém pedeannotationlib.get_annotations(funcao)o dicionário com as dicasDicas de Tipo
string.templatelibAs template strings: t"…" em vez de f"…" guarda as partes separadas, para outro código montar o texto com segurançat = t"Olá, {nome}" e t.strings, t.values('Olá, ', ''), ('Ana',)Novidades
Se você tem o Python 3.13 (o do Debian 13)

Estes três módulos não existem antes do 3.14: import compression.zstd dá ModuleNotFoundError. Todos os outros desta página funcionam no 3.13.


O que não vem instalado (ou não funciona no editor)

MóduloNo Ubuntu da AnaNo editor do guia
tkinter, turtle (janelas e desenho)Fazem parte da biblioteca padrão, mas o Ubuntu os separa num pacote à parte: sem ele, import turtle termina em ImportError: No module named 'tkinter', please install the python3-tk packageModuleNotFoundError: não existem no navegador
subprocess, threadingFuncionamImportam, mas dão erro ao usar: OSError: [Errno 138] emscripten does not support processes. e RuntimeError: can't start new thread
urllib.request (internet)Funciona, se houver conexãoSem rede: com um endereço https://…, o urlopen termina em RuntimeError: TLS not supported in this environment
venv, readline, cursesFuncionamModuleNotFoundError

E os pacotes que não são da biblioteca padrão, como requests e numpy? Esses se instalam com o pip, dentro de um ambiente virtual: veja as aulas pip e venv.


Experimente

Missão: use o statistics para mostrar a média das notas (Média: 7.75) e o Counter do collections para mostrar o tamanho de camiseta mais pedido (Mais pedido: M). Não esqueça os import.

notas = [7.5, 8.0, 6.5, 9.0]
tamanhos = ["P", "M", "M", "G"]

print("Média:", 0)
print("Mais pedido:", "?")
import statistics
from collections import Counter

notas = [7.5, 8.0, 6.5, 9.0]
tamanhos = ["P", "M", "M", "G"]

print("Média:", statistics.mean(notas))
print("Mais pedido:", Counter(tamanhos).most_common(1)[0][0])

Experimente à vontade: troque os exemplos, importe outros módulos desta página e veja os resultados no editor.

import math
import datetime
import textwrap
import difflib

print(math.sqrt(16))
print(datetime.date(2026, 12, 25) - datetime.date(2026, 10, 18))
print(textwrap.wrap("A padaria do bairro abre cedo todos os dias", width=15))
print(difflib.get_close_matches("feijao", ["feijão", "arroz", "macarrão"]))