Python/Conceitos básicos/Módulos
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,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
- ↑ The Zen of Python, site python.org