Python/Conceitos básicos/Módulos

Origem: Wikilivros, livros abertos por um mundo aberto.

Cada arquivo em Python é chamado de módulo. Módulos são um conjunto de códigos como funções, classes, variáveis, etc. Vários módulos podem se comunicar através do comando import módulo.

Importando módulos[editar | editar código-fonte]

Existem dois modos principais de chamar módulos[1], como:

>>>import wx
>>>print wx.codificação()
utf-8

ou

>>>from wx import *
>>>print codificação()
utf-8

Nos dois modos, é lido o arquivo wx.py.

Os dois modos de acesso estão corretos e não geraram erros, o funcionamento seria: procura o módulo e inicializá-o e o outro define o escopo do módulo.

No primeiro modo (import modulo) existe um alto acoplamento devido ao modo de acesso ao módulo wx onde é efetuada as duas etapas para cada módulo. As funções (e variáveis) do módulo wx tornam-se disponíveis precedendo seu nome por wx., por exemplo, se em wx.py é definida uma variável A, então esta variável pode ser usada como wx.A.

No segundo exemplo (from modulo import *) se ganharia flexibilidade de definir e reimportar todas as funções do módulo wx, incluindo a função codificação(). As funções e variáveis do módulo tornam-se acessíveis sem precisar prepor o wx..

Qual é o melhor método?[editar | editar código-fonte]

Um dos principios da linguagem é que There should be one-- and preferably only one --obvious way to do it[2] (numa tradução livre Deve haver um - e apenas um - modo óbvio de fazer isso), e a importação de módulos não é exceção.

Como regra geral, deve-se usar import modulo[1]. A principal exceção (há outras, ver a referência [1]) é quando a própria documentação do módulo recomenda que se use from modulo import * (por exemplo, o tkinter)

Módulos disponíveis[editar | editar código-fonte]

Os módulos disponíveis estão armazenados na variável sys.modules, para ver quais são é preciso importar o módulo sys:

>>> import sys
>>> sys.modules

Ver também Python/Bibliotecas padrão.

Referências[editar | editar código-fonte]

  1. 1,0 1,1 1,2 Importing Python Modules, por Fredrik Lundh, no site effbot.org. Explica as diferenças entre import módulo e from módulo import *, além de um terceiro método não descrito neste tutorial
  2. The Zen of Python, site python.org