15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

para que trabalhem juntos.

Chegará o dia em que nos veremos com tantos módulos para administrar que

será preciso mais uma camada de abstração no programa apenas para torná-lo

inteligível. Para isso, o Python tem o recurso de pacotes, ou, em inglês,

packages. Os pacotes são módulos que contêm outros módulos.

Em muitos casos, os pacotes são definidos pela criação de um arquivo vazio

chamado __init__.py em uma pasta. Quando o __init__.py está presente,

quaisquer outros arquivos de Python naquela pasta ficarão disponíveis para

importação usando um caminho relativo a ela. Por exemplo, imagine que

tenhamos a seguinte estrutura de diretórios em nosso programa:

main.py

mypackage/__init__.py

mypackage/models.py

mypackage/utils.py

Para importar o módulo utils, usamos o nome absoluto do módulo, o que inclui o

nome da pasta que contém o módulo.

# main.py

from mypackage import utils

Esse padrão é ainda válido quando temos pastas de pacotes dentro de outros

pacotes (por exemplo, mypackage.foo.bar).

Nota

O Python 3.4 introduziu o conceito de namespace packages, uma maneira mais

flexível de definir pacotes. Os namespace packages podem ser compostos de

módulos espalhados em pastas diferentes, arquivos compactados com zip ou

mesmo em sistemas remotos. Para saber mais sobre os recursos avançados

nos namespace packages e como usá-los, consulte a PEP 420

(http://www.python.org/dev/peps/pep-0420/).

A funcionalidade oferecida pelos packages tem dois usos muito importantes para

nossos programas em Python.

Namespaces

O primeiro uso dos pacotes é dividir nossos módulos em namespaces

(literalmente, espaços de nomes), o que permite ter muitos módulos com o

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!