2.1 Introdução aos pacotes
Pacotes são uma forma de estruturar módulos em diretórios. Pacote — é um diretório, contendo um arquivo __init__.py e um ou mais módulos. O arquivo __init__.py pode estar vazio ou conter código de inicialização do pacote.
Exemplo de estrutura de pacote/diretório
mypackage/
__init__.py
module1.py
module2.py
Conteúdo do arquivo __init__.py |
|---|
|
Conteúdo do arquivo module1.py |
|---|
|
Conteúdo do arquivo module2.py |
|---|
|
Exemplo de código que utiliza funções deste pacote:
import mypackage
print(mypackage.func1()) # Saída: Function 1
print(mypackage.func2()) # Saída: Function 2
Vamos tentar escrever nosso próprio pacote abaixo e, ao mesmo tempo, entender como funcionam os pacotes de terceiros.
2.2 Criando seu pacote passo a passo
Passo 1: Criando a estrutura do pacote
O primeiro passo é criar a estrutura de diretórios e arquivos para o seu pacote. Como exemplo, vamos criar um pacote chamado mypackage, contendo dois módulos: module1.py e module2.py.
Exemplo de estrutura de pacote:
mypackage/
__init__.py
module1.py
module2.py
Descrição dos arquivos:
-
__init__.py: Este arquivo pode estar vazio ou conter código de inicialização do pacote. Ele é necessário para que o Python considere o diretório como um pacote. -
module1.pyemodule2.py: Estes arquivos contêm funções, classes e variáveis que você deseja incluir no seu pacote.
Passo 2: Escrevendo código para os módulos
Vamos escrever um código simples para os nossos módulos.
module1.py
def func1():
return "Function 1 from module1"
module2.py
def func2():
return "Function 2 from module2"
__init__.py
Para importar funções dos nossos módulos para o nível do pacote, vamos adicioná-los no __init__.py.
from .module1 import func1
from .module2 import func2
Agora, quando você importar o pacote, as funções func1 e func2 estarão disponíveis diretamente.
Passo 3: Testando o pacote
Crie um arquivo test.py no mesmo diretório onde está o diretório mypackage, e use o pacote neste arquivo para testar.
test.py
import mypackage
print(mypackage.func1()) # Saída: Function 1 from module1
print(mypackage.func2()) # Saída: Function 2 from module2
Execute o test.py para garantir que o seu pacote funciona corretamente.
2.3 Usando a função dir()
Quando você importa um módulo ou pacote, pode usar a função dir() para obter uma lista de todos os atributos e métodos disponíveis nesse módulo. Isso é especialmente útil se você estiver trabalhando com um módulo novo ou desconhecido e quiser descobrir rapidamente que funções e classes ele oferece.
Exemplo: Explorando o módulo padrão math
Vamos ver um exemplo de uso do dir() para explorar o módulo padrão math.
import math
print(dir(math))
Este código importa o módulo math e imprime a lista de todos os atributos e métodos disponíveis. O resultado será algo assim:
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
Esta lista inclui todas as funções e constantes definidas no módulo math, como sin, cos, tan, pi e outros.
Usando dir() em módulos personalizados
Você também pode usar dir() em módulos personalizados (seus próprios). Suponha que você tem um arquivo mymodule.py com o seguinte conteúdo:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
pi = 3.14159
Você pode importar este módulo e usar dir() para explorar seu conteúdo:
import mymodule
print(dir(mymodule))
O resultado será o seguinte:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__',
'greet', 'pi']
A lista inclui 8 atributos especiais (envolvidos em sublinhado) do módulo mymodule, e no final estão o seu método greet e a variável pi.
GO TO FULL VERSION