Capítulo 25, Básico
Módulos e importação
Um módulo é um arquivo `.py`. Um pacote é uma pasta de módulos. É assim que o Python organiza código próprio e de terceiros.
Código deste capítulo: basico/cap25_modulos.py
Formas de importar
import math
from math import sqrt, pi
import datetime as dt
print(math.sqrt(16), sqrt(25))
print(f"{pi:.4f}")
print(math.floor(2.7), math.ceil(2.1), math.gcd(12, 18))
4.0 5.0
3.1416
2 3 6
Eu prefiro import modulo e uso modulo.funcao, porque o leitor vê de onde vem cada nome. Evite from modulo import *: ele joga dezenas de nomes no seu código e torna impossível saber de onde cada um veio.
A biblioteca padrão
O Python vem com uma biblioteca padrão enorme, e conhecê-la evita instalar pacote para o que já existe:
import statistics
from datetime import date, timedelta
notas = [7, 8, 9, 10]
print(statistics.mean(notas), statistics.median(notas))
hoje = date(2026, 10, 6)
print(hoje.strftime("%d/%m/%Y"))
print(hoje + timedelta(days=30))
print((date(2026, 12, 25) - hoje).days)
8.5 8.5
06/10/2026
2026-11-05
80
import random
print(random.randint(1, 6) in range(1, 7))
print(random.choice(["a", "b", "c"]) in "abc")
True
True
O random serve para jogos e simulações. Para senhas e tokens, que precisam ser imprevisíveis de verdade, use o módulo secrets.
Seus próprios módulos
Qualquer arquivo .py vira um módulo importável. Veja um par de arquivos na pasta exemplos/modulos:
"""Funções de apoio importadas pelo programa principal."""
def saudacao(nome: str) -> str:
return f"Olá, {nome}!"
if __name__ == "__main__":
print(saudacao("teste do módulo"))
from util import saudacao
print(saudacao("Ana"))
python3 exemplos/modulos/principal.py
Ao executar um script, o Python coloca a pasta do script no início da lista de busca de módulos, e é por isso que from util import saudacao funciona.
O padrão if __name__ == "__main__"
Todo módulo tem uma variável __name__. Quando o arquivo é executado como programa, o valor é "__main__". Quando é importado, o valor é o nome do módulo. Esse teste permite que o mesmo arquivo seja, ao mesmo tempo, uma biblioteca e um programa:
def main():
print(f"executando com __name__ = {__name__!r}")
if __name__ == "__main__":
main()
executando com __name__ = '__main__'
Sem essa proteção, importar o módulo executaria o programa inteiro como efeito colateral.
Como o Python encontra módulos
O interpretador procura em sys.path, uma lista de pastas, na ordem. Depois de importado, o módulo fica guardado em sys.modules, e o segundo import apenas reaproveita o que já está lá:
import sys
print(type(sys.path).__name__, "math" in sys.modules)
list True
Pacotes de terceiros vêm do PyPI e se instalam dentro de um ambiente virtual (capítulo 4), com pip install, uv add ou poetry add. Os pacotes próprios, com __init__.py e estrutura de pastas, voltam no capítulo de empacotamento.
Exercício 1
Dias entre duas datas
Escreva dias_entre(inicio, fim) que receba datas no formato "2026-01-01" e devolva a quantidade de dias entre elas. Dica: date.fromisoformat.