Pacotes Python: como criá-los e importá-los?

Neste artigo, você aprenderá a dividir sua base de código em módulos limpos e eficientes usando pacotes Python. Além disso, você aprenderá a importar e usar seus próprios pacotes ou pacotes de terceiros em seu programa Python.

Vídeo: Pacotes Python: Organize Seu Código

O que são pacotes?

Normalmente não armazenamos todos os nossos arquivos em nosso computador no mesmo local. Usamos uma hierarquia de diretórios bem organizada para facilitar o acesso.

Arquivos semelhantes são mantidos no mesmo diretório, por exemplo, podemos manter todas as músicas no diretório " música ". De forma análoga a isso, Python possui pacotes para diretórios e módulos para arquivos.

À medida que nosso programa de aplicação cresce em tamanho com muitos módulos, colocamos módulos semelhantes em um pacote e módulos diferentes em pacotes diferentes. Isso torna um projeto (programa) fácil de gerenciar e conceitualmente claro.

Da mesma forma, como um diretório pode conter subdiretórios e arquivos, um pacote Python pode ter subpacotes e módulos.

Um diretório deve conter um arquivo nomeado __init__.pypara que o Python o considere como um pacote. Este arquivo pode ser deixado vazio, mas geralmente colocamos o código de inicialização para esse pacote neste arquivo.

Aqui está um exemplo. Suponha que estejamos desenvolvendo um jogo. Uma organização possível de pacotes e módulos pode ser conforme mostrado na figura abaixo.

Estrutura do Módulo de Pacote em Programação Python

Importando módulo de um pacote

Podemos importar módulos de pacotes usando o operador ponto (.).

Por exemplo, se quisermos importar o startmódulo do exemplo acima, isso pode ser feito da seguinte maneira:

 import Game.Level.start

Agora, se este módulo contém uma função chamada select_difficulty(), devemos usar o nome completo para referenciá-la.

 Game.Level.start.select_difficulty(2)

Se esta construção parecer longa, podemos importar o módulo sem o prefixo do pacote da seguinte maneira:

 from Game.Level import start

Agora podemos chamar a função simplesmente como segue:

 start.select_difficulty(2)

Outra maneira de importar apenas a função necessária (ou classe ou variável) de um módulo dentro de um pacote seria a seguinte:

 from Game.Level.start import select_difficulty

Agora podemos chamar diretamente esta função.

 select_difficulty(2)

Embora seja mais fácil, esse método não é recomendado. Usar o namespace completo evita confusão e evita que dois nomes de identificadores iguais colidam.

Ao importar pacotes, o Python procura na lista de diretórios definidos em sys.path, semelhante ao caminho de pesquisa do módulo.

Artigos interessantes...