1.7. Módulos e Importação¶
Frequentemente é necessário desenvolver um programa mais complexo, usando um editor de texto para preparar um arquivo e executando o arquivo usando o interpretador de Python. Esse arquivo é conhecido como script. À medida que o programa cresce, torna-se interessante dividí-lo em diversos arquivos, para facilitar a manutenção e a compreensão do código. Pode também ser necessário usar uma ou mais funções em diversos programas, sendo indesejável copiar o código da(s) função(ões) para cada programa.
Python atende esses requisitos por meio de scripts chamados módulos. Definições criadas em um módulo podem ser importadas em outros módulos ou no módulo principal (main), que é o módulo que contém as variáveis e funções definidas no script executado.
Um arquivo de módulo deve ter a extensão .py. Vejamos um exemplo retirado da documentação de Python. O código abaixo foi salvo em um arquivo chamado “fibo.py”.
# Fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
Para importar o módulo correspondente, fazemos:
import fibo
Após a importação, podemos usar as funções do módulo fibo da seguinte maneira:
fibo.fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
fibo.fib2(1000)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
É possível importar as funções do módulo fibo diretamente. Assim, elas podem ser chamadas sem ser precedidas pelo nome do módulo:
from fibo import fib, fib2
fib(300)
0 1 1 2 3 5 8 13 21 34 55 89 144 233
Note que dessa forma, para ter acesso a todas as funções do módulo, seria necessário declarar cada um dos seus nomes. Isso pode ser feito de forma mais direta usando um asterisco:
from fibo import *
fib2(300)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
Isso irá importar todos os identificadores do módulo que não começam com underline (_). A importação com asterisco não costuma ser muito usada, porque comumente resulta em código de difícil leitura.
O comando import pode usar o operador as para atribuir um nome diferente ao módulo ou a uma função:
import fibo as f
f.fib(200)
0 1 1 2 3 5 8 13 21 34 55 89 144
from fibo import fib as fibonacci
fibonacci(100)
0 1 1 2 3 5 8 13 21 34 55 89
1.7.1. Módulos da biblioteca padrão de Python¶
Python já vem de fábrica com uma enorme quantidade de módulos que podem ser importados para facilitar o trabalho de desenvolvimento. Recomendamos uma visita à lista de módulos da biblioteca padrão. Alguns módulos importantes:
math: Funções matemáticas
statistics: Funções estatísticas
random: Geração de números aleatórios
datetime: Tipos e funções básicos de datas
os: Funções de interação com o sistema operacional
sqlite3: Interface para bancos de dados SQLite
itertools: Funções para programação funcional
multiprocessing: Processamento paralelo
urllib: Funções para manipulação de URLs e requisições