Biblioteca padrão essencial
Esta aula explora módulos essenciais da biblioteca padrão do Python: os e sys para interação com sistema operacional, math e random para operações matemáticas e aleatórias, datetime para manipulação de datas e horas, e uma visão geral de outros módulos úteis como json, re, collections e itertools.
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
- Documentação oficial do módulo os
- Documentação oficial do módulo sys
- Documentação oficial do módulo math
- Documentação oficial do módulo random
- Documentação oficial do módulo datetime
- Documentação oficial do módulo json
- Documentação oficial do módulo re
- Documentação oficial do módulo collections
- Documentação oficial do módulo itertools
Exercícios
- Escreva um programa que liste apenas os arquivos (não diretórios) do diretório atual usando
os.listdireos.path.isfile. - Use o módulo
syspara exibir a versão do Python que está sendo executada (dica:sys.version). - Calcule a área de um círculo com raio 5 usando o módulo
math. - Gere uma lista de 10 números inteiros aleatórios entre 1 e 100 e exiba o maior e o menor valor.
- Calcule quantos dias faltam para o próximo Natal (25 de dezembro) a partir da data atual.
import os
itens = os.listdir('.')
for item in itens:
if os.path.isfile(item):
print(item)
import sys
print("Versão do Python:", sys.version)
import math
raio = 5
area = math.pi * raio ** 2
print("Área do círculo:", area)
import random
numeros = [random.randint(1, 100) for _ in range(10)]
print("Números:", numeros)
print("Maior:", max(numeros))
print("Menor:", min(numeros))
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.")