Domine Python: 11 Bibliotecas e Módulos Essenciais para Desenvolvedores

Bibliotecas e módulos são ferramentas cruciais para qualquer programador, simplificando o processo de desenvolvimento.

Durante o trabalho em projetos, é comum deparar-se com situações que não podem ser resolvidas apenas com a codificação padrão de uma linguagem de programação. Nesses momentos, a utilização de bibliotecas e módulos se torna essencial.

A linguagem Python se destaca por oferecer um vasto repertório de módulos e bibliotecas. Além dos módulos já integrados, o Python conta com uma variedade de bibliotecas e módulos de terceiros, todos projetados para auxiliar no desenvolvimento. Vamos explorar alguns desses módulos, começando pelos integrados.

# Módulos Internos do Python

O Python já inclui diversos módulos para atender a diversas necessidades. Vamos analisar alguns desses módulos, agrupados por funcionalidade.

Coleções – Tipos de Dados Contêineres

O Python oferece diferentes tipos de coleções para organizar e armazenar dados, como tuplas, listas e dicionários. O módulo `collections` expande essas funcionalidades, oferecendo recursos adicionais para o gerenciamento de coleções.

Um exemplo é a coleção `deque`, que se assemelha a uma lista, mas permite a adição e remoção de elementos em ambas as extremidades, de forma mais eficiente que listas convencionais. A escolha entre `deque` e lista dependerá das necessidades específicas do seu projeto. Vejamos um exemplo prático com o `collections.deque`:

import collections
nums = [1, 2, 3]
# criação de um deque a partir de uma lista
deque = collections.deque(nums)

print(deque)

# adição de um elemento ao final
deque.append(4)

print(deque)

# adição de um elemento ao início
deque.appendleft(0)

print(deque)

# remoção de um elemento do final
deque.pop()

print(deque)

# remoção de um elemento do início
deque.popleft()

print(deque)

Ao executar o código acima, você verá os resultados de cada operação. O módulo `collections` oferece outras estruturas de dados úteis, como:

Counter
Retorna um dicionário com a frequência de cada elemento em uma lista.

UserList
Utilizado para criar subclasses de lista de forma rápida.

UserDict
Utilizado para criar subclasses de dicionário de forma rápida.

UserString
Utilizado para criar subclasses de string de forma rápida.

Recomenda-se consultar a documentação do módulo `collections` para explorar todos os tipos de dados e métodos disponíveis.

Dica rápida: Use a função embutida `dir(objeto)` para ver todos os métodos de um objeto.

CSV – Manipulação de Arquivos

Arquivos CSV (Valores Separados por Vírgula) são comumente usados para armazenar dados tabulares, sendo um formato popular para importação e exportação de dados entre planilhas e bancos de dados. O Python oferece o módulo `csv` para facilitar a manipulação desses arquivos.

Vamos demonstrar como ler dados de um arquivo CSV. Primeiro, crie um arquivo chamado `sample.csv` e copie o seguinte conteúdo:

Name,Age,Graduation Year
 
Hafeez,21,2021
 
Aslan,23,2019
 
Rambabu,21,2021

O módulo `csv` possui métodos para leitura e escrita. Vejamos como ler os dados do arquivo:

import csv

with open('sample.csv') as file:
    # criando o leitor
    reader = csv.reader(file)
    
    # lendo linha a linha usando um loop
    for row in reader:
        # row é uma lista contendo os elementos do arquivo CSV
        # juntando a lista usando o método join(list)
        print(','.join(row))

Execute o código para visualizar o resultado. O módulo também oferece a função `csv.writer()` para escrever dados em arquivos CSV. Experimente outros métodos usando as funções `dir()` e `help()`. O Python também possui o módulo `json` para trabalhar com arquivos JSON.

Random – Geração de Números Aleatórios

O módulo `random` do Python permite gerar dados de forma aleatória, sendo útil em diversas aplicações como jogos, simulações e testes. Podemos gerar diferentes tipos de dados aleatórios usando este módulo. Vejamos um exemplo de como gerar um número inteiro aleatório dentro de um intervalo:

import random

# gerando um número aleatório entre 1 e 100
print(random.randint(1, 100))

Explore outros métodos do módulo `random` usando `dir()` e `help()`. Vamos criar um jogo simples para demonstrar a aplicação do módulo `random`. O jogo consistirá em adivinhar um número gerado aleatoriamente.

O programa irá gerar um número aleatório entre 1 e 100, e o usuário tentará adivinhar o número, recebendo dicas se o palpite é maior ou menor do que o número gerado. O programa irá contar o número de tentativas.

# importando o módulo random
import random

# gerando um número aleatório
random_number = random.randint(1, 100)

# inicializando o contador de tentativas
guess_count = 0

# loop até o usuário acertar o número
while True:
    # recebendo o palpite do usuário
    user_guessed_number = int(input("Digite um número entre 1 e 100: "))

    # verificando se o palpite está correto
    if user_guessed_number == random_number:
        print(f"Você acertou o número em {guess_count} tentativas")
        # quebra o loop
        break
    elif user_guessed_number < random_number:
        print("Seu número é menor")
    elif user_guessed_number > random_number:
        print("Seu número é maior")

    # incrementando o contador de tentativas
    guess_count += 1

Tkinter – Aplicações com Interface Gráfica (GUI)

Tkinter é um módulo embutido para o desenvolvimento de aplicações com interface gráfica. É ideal para iniciantes, permitindo a criação de calculadoras, sistemas de login, editores de texto, entre outros. Há vasta documentação disponível para aprender o desenvolvimento de GUI com Tkinter.

A documentação oficial do Tkinter é um excelente ponto de partida para aprender a criar belas aplicações com interface gráfica.

# Módulos de Terceiros

Requests – Requisições HTTP

O módulo `requests` é usado para enviar solicitações HTTP de diversos tipos para servidores. Ele oferece suporte a HTTP/1.1 e permite adicionar cabeçalhos, dados e outras informações utilizando dicionários Python. Para usar este módulo, é preciso instalá-lo através do comando:

pip install requests

O módulo `requests` é simples de usar e pode ser utilizado mesmo sem conhecimento prévio de requisições HTTP. Vejamos um exemplo de como enviar uma requisição GET e como interpretar a resposta:

import requests

# enviando uma requisição GET
request = requests.get("https://www.google.com/")

# imprimindo o status code, a URL e o método da requisição
print(request.status_code)
print(request.url)
print(request.request)

O código acima exibirá o código de status, a URL e o método da requisição (GET, POST). Você também pode acessar o conteúdo da página com `request.content`. Recomenda-se consultar a documentação do módulo para mais informações.

BeautifulSoup4 – Web Scraping

A biblioteca BeautifulSoup é uma ferramenta útil para realizar web scraping. É acessível para iniciantes e oferece uma documentação detalhada aqui. O código de exemplo abaixo demonstra como extrair dados de uma página web.

Instale o BeautifulSoup utilizando o seguinte comando:

pip install beautifulsoup4

Veja um exemplo simples para realizar o primeiro web scraping:

## Scraping a lista de produtos da ConsumerReport usando BeautifulSoup

## importando os módulos bs4 e requests
import bs4
import requests

## inicializando a url
url = "https://www.consumerreports.org/cro/a-to-z-index/products/index.htm"

## recebendo a resposta da página usando o método get do módulo requests
page = requests.get(url)

## armazenando o conteúdo da página em uma variável
html = page.content

## criando o objeto BeautifulSoup
soup = bs4.BeautifulSoup(html, "lxml")

## encontrando a classe ou id da tag que contém nomes e links
div_class = "crux-body-copy"

## recebendo todas as divs usando o método find_all
div_tags = soup.find_all("div", class_=div_class) ## encontrando as divs que contêm a classe mencionada

## veremos todas as tags 'a' dentro da div
for tag in div_tags:
    print(tag)

Ao executar o código, será possível observar o resultado do web scraping. Existem diversas outras estruturas para web scraping que podem ser exploradas.

# Ciência de Dados e Aprendizado de Máquina

Existem diversas bibliotecas especializadas para ciência de dados e aprendizado de máquina, desenvolvidas em C para alta performance.

Numpy

Numpy é uma biblioteca essencial para computação científica, permitindo trabalhar com arrays multidimensionais de forma eficiente. É amplamente usada em projetos de aprendizado de máquina para realizar cálculos matemáticos complexos. A biblioteca é de código aberto e fácil de aprender.

Instale o numpy utilizando o comando:

pip install numpy

Pandas

Pandas é uma biblioteca para análise de dados. Permite filtrar dados de forma eficiente, além de oferecer estruturas de dados úteis e recursos para manipular arquivos em diversos formatos.

Instale o módulo com:

pip install pandas

Matplotlib

Matplotlib é uma biblioteca para criação de gráficos 2D. Ela permite visualizar dados de diversas formas como gráficos de barras, histogramas e diagramas de dispersão. É possível gerar imagens dos gráficos em diversos formatos.

Instale o matplotlib usando o comando:

pip install matplotlib

Dica rápida: Você pode instalar anaconda para obter todas as bibliotecas e módulos necessários para Ciência de Dados.

Se você deseja se aprofundar em Python para ciência de dados e aprendizado de máquina, explore este curso udemy.

# Frameworks Web

O Python oferece diversos frameworks para desenvolvimento web. Vamos discutir dois dos mais populares: Django e Flask.

Django

Django é um framework web de código aberto desenvolvido em Python. É prático para criação de sites de diversos tipos, sendo utilizado em plataformas como Instagram, bitbucket e Disqus.

  • Permite a criação rápida de sites complexos.
  • Automatiza diversas tarefas comuns em desenvolvimento web.
  • Oferece segurança contra ataques como SQL Injection, cross-site scripting, cross-site request forgery e clickjacking.
  • Pode ser usado para construir desde sistemas de gerenciamento de conteúdo até redes sociais.

A documentação do Django é abrangente. É importante ter conhecimento de Python para utilizar o Django. Existem diversos recursos para aprender Django.

Flask

Flask é um micro framework web desenvolvido em Python. É mais “pythônico” que Django e possui uma excelente documentação. Utiliza o mecanismo de templates Jinja. Criar grandes sites com Flask pode ser complexo. A maioria dos recursos como roteamento de URL, envio de requisições, cookies seguros e sessões estão presentes tanto em Django quanto em Flask.

Escolha o framework mais adequado para a complexidade do seu projeto. Django é o framework mais popular para desenvolvimento web em Python.

Conclusão

Neste artigo, você conheceu diversos módulos, bibliotecas e frameworks úteis para o desenvolvimento em Python.

Todos começam como iniciantes.

Seja qual for o seu objetivo, comece consultando a documentação e buscando recursos de aprendizado em sites educacionais.