Módulos

Os módulos em Python são uma das ferramentas mais importantes para organizar, reutilizar e modularizar o código. Eles permitem que você divida programas grandes em partes menores e mais gerenciáveis. 

O que é um módulo

Um módulo é simplesmente um ficheiro de Python com a extensão .py que contém definições de funções, classes, variáveis ou até mesmo código executável. Ele pode ser importado para outros scripts Python, permitindo a reutilização de código.

Por exemplo, podemos criar o módulo meumodulo. Para isso basta criarmos o ficheiro meumodulo.py:

def saudacao(nome):
    return f"Olá, {nome}!"

def bemvindo():
    return "Bem vindo ao Python"

Criámos um módulo chamado meumodulo que contém as funções saudacao() e bemvindo().

Importar módulos

Importamos um módulo, ou partes de um módulo, usando a palavra reservada import.

Importar um módulo inteiro

import meumodulo

#usamos a função saudacao() que pertence ao módulo:
print(meumodulo.saudacao("Maria"))

Importar funções específicas de um módulo

from meumodulo import saudacao

print(saudacao("João"))

Importar módulos usando aliases

Podemos dar um nome alternativo ao módulo ou função para simplificar o seu uso, usando import…as:

import meumodulo as mm

print(mm.saudacao("Ana"))

Importar tudo de um módulo

Para importar todas as funções e variáveis de um módulo (não recomendado em projetos grandes):

from meumodulo import *

print(saudacao("Carlos"))

Pacotes (packages)

Um pacote é uma coleção de módulos organizados em pastas com um arquivo especial __init__.py. Isso permite criar hierarquias lógicas de módulos.

Exemplo:

Estrutura do pacote na pasta meupacote:

meupacote/

├── init.py
├── modulo1.py
└── modulo2.py

Conteúdo do ficheiro modulo1.py:

def funcao_modulo1():
    return "Função do módulo 1"

Conteúdo do ficheiro modulo2.py:

def funcao_modulo2():
    return "Função do módulo 2"

Uso do pacote:

from meupacote.modulo1 import funcao_modulo1
from meupacote.modulo2 import funcao_modulo2

print(funcao_modulo1())  # Saída: Função do módulo 1
print(funcao_modulo2())  # Saída: Função do módulo 2

Módulos da biblioteca padrão

O Python vem com uma vasta biblioteca padrão que inclui módulos prontos para uso. Alguns exemplos comuns:

Módulo math (operações matemáticas):

import math

print(math.sqrt(16))  # Saída: 4.0
print(math.pi)        # Saída: 3.141592653589793

Módulo random (geração de números aleatórios):

import random

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

Módulo datetime (manipulação de datas e horas):

from datetime import datetime

agora = datetime.now()
print(agora)