A biblioteca padrão do Python é um conjunto de módulos e pacotes que acompanham a instalação da linguagem. Ela oferece soluções prontas para tarefas comuns, como manipulação de arquivos, operações matemáticas, tratamento de datas, expressões regulares e muito mais. Nesta aula, exploraremos alguns dos módulos mais essenciais: os, sys, math, random e datetime. Ao final, teremos uma visão geral de outros módulos importantes que você certamente usará em seus projetos.

os e sys

O módulo os fornece funções para interagir com o sistema operacional, como manipular caminhos de arquivos, criar diretórios, executar comandos e acessar variáveis de ambiente. Já o módulo sys permite acessar parâmetros e funções específicas do interpretador Python, como argumentos da linha de comando, caminhos de busca de módulos e o fluxo de saída padrão.

Exemplos práticos:

import os
import sys

# Obtém o diretório atual
dir_atual = os.getcwd()
print("Diretório atual:", dir_atual)

# Lista arquivos e pastas
itens = os.listdir('.')
print("Itens no diretório:", itens)

# Cria um novo diretório
os.makedirs('exemplo_dir', exist_ok=True)

# Acessa variável de ambiente
home = os.environ.get('HOME', 'Não definido')
print("Home:", home)

# Argumentos da linha de comando
print("Argumentos:", sys.argv)

# Caminhos de busca de módulos
print("Python path:", sys.path)

math e random

O módulo math oferece funções matemáticas básicas e avançadas, como trigonometria, logaritmos, constantes (pi, e) e operações de arredondamento. O módulo random implementa geradores de números pseudoaleatórios para diversas distribuições, sendo útil em simulações, jogos e amostragens.

Exemplos:

import math
import random

# Constantes
print("Pi:", math.pi)
print("Euler:", math.e)

# Funções trigonométricas
angulo = math.radians(45)  # converte graus para radianos
print("Seno de 45°:", math.sin(angulo))

# Arredondamento
print("Arredondar para cima:", math.ceil(3.14))
print("Arredondar para baixo:", math.floor(3.14))

# Número aleatório entre 0 e 1
print("Aleatório:", random.random())

# Número inteiro aleatório em um intervalo
print("Inteiro entre 1 e 10:", random.randint(1, 10))

# Escolher um elemento de uma lista
lista = ['a', 'b', 'c']
print("Escolha aleatória:", random.choice(lista))

# Embaralhar uma lista
random.shuffle(lista)
print("Lista embaralhada:", lista)

datetime

O módulo datetime fornece classes para manipular datas e horas de forma simples e eficiente. As principais classes são date, time, datetime, timedelta e tzinfo. Com elas, você pode criar objetos de data/hora, realizar operações aritméticas (como adicionar dias), formatar para strings e fazer parsing de strings para objetos datetime.

Exemplos:

from datetime import date, time, datetime, timedelta

# Data atual
data_atual = date.today()
print("Data atual:", data_atual)

# Criar uma data específica
data_nasc = date(1990, 5, 15)
print("Data nascimento:", data_nasc)

# Diferença entre datas
diferenca = data_atual - data_nasc
print("Dias desde nascimento:", diferenca.days)

# Datetime atual
datetime_atual = datetime.now()
print("Datetime atual:", datetime_atual)

# Formatação
print("Formatado:", datetime_atual.strftime("%d/%m/%Y %H:%M:%S"))

# Parsing de string
data_str = "2025-03-28 14:30:00"
data_parsed = datetime.strptime(data_str, "%Y-%m-%d %H:%M:%S")
print("Parsed:", data_parsed)

# Operações com timedelta
amanha = datetime_atual + timedelta(days=1)
print("Amanhã:", amanha)

Visão geral

Além dos módulos detalhados, a biblioteca padrão inclui muitos outros que são frequentemente utilizados. O módulo json permite codificar e decodificar dados no formato JSON. O módulo re fornece suporte a expressões regulares. O módulo collections oferece estruturas de dados especializadas como Counter, defaultdict e namedtuple. O módulo itertools contém funções para iteração eficiente, como chain, product e permutations.

Exemplo rápido com json e collections:

import json
from collections import Counter, defaultdict

# JSON
dados = {"nome": "Alice", "idade": 30}
json_str = json.dumps(dados, indent=2)
print("JSON string:")
print(json_str)
dados_lidos = json.loads(json_str)
print("Dados lidos:", dados_lidos)

# Counter
lista = ['a', 'b', 'c', 'a', 'b', 'a']
contador = Counter(lista)
print("Contagem:", contador)

# defaultdict
agenda = defaultdict(list)
agenda['segunda'].append('reunião')
print("Agenda:", agenda)

Boas práticas

Ao usar a biblioteca padrão, prefira sempre os módulos nativos a implementações próprias, pois são testados, eficientes e bem documentados. Consulte a documentação oficial para explorar todas as funcionalidades. Lembre-se de que muitos módulos possuem sub-módulos e classes que podem atender a necessidades específicas sem instalar pacotes externos.

Referências

Exercícios

  1. Escreva um programa que liste apenas os arquivos (não diretórios) do diretório atual usando os.listdir e os.path.isfile.
  2. ✓ Resposta:
    import os
    
    itens = os.listdir('.')
    for item in itens:
        if os.path.isfile(item):
            print(item)
    
  3. Use o módulo sys para exibir a versão do Python que está sendo executada (dica: sys.version).
  4. ✓ Resposta:
    import sys
    print("Versão do Python:", sys.version)
    
  5. Calcule a área de um círculo com raio 5 usando o módulo math.
  6. ✓ Resposta:
    import math
    raio = 5
    area = math.pi * raio ** 2
    print("Área do círculo:", area)
    
  7. Gere uma lista de 10 números inteiros aleatórios entre 1 e 100 e exiba o maior e o menor valor.
  8. ✓ Resposta:
    import random
    
    numeros = [random.randint(1, 100) for _ in range(10)]
    print("Números:", numeros)
    print("Maior:", max(numeros))
    print("Menor:", min(numeros))
    
  9. Calcule quantos dias faltam para o próximo Natal (25 de dezembro) a partir da data atual.
  10. ✓ Resposta:
    from datetime import date
    
    hoje = date.today()
    ano = hoje.year
    natal = date(ano, 12, 25)
    if natal < hoje:
        natal = date(ano + 1, 12, 25)
    dias = (natal - hoje).days
    print(f"Faltam {dias} dias para o Natal.")