CodeGym /Cursos /Python SELF PT /Criando seu próprio pacote

Criando seu próprio pacote

Python SELF PT
Nível 19 , Lição 1
Disponível

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

# __init__.py
from .module1 import func1
from .module2 import func2
Conteúdo do arquivo module1.py

# module1.py
def func1():
    return "Function 1"
Conteúdo do arquivo module2.py

# module2.py
def func2():
    return "Function 2"

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.py e module2.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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION