quarta-feira, 12 de setembro de 2012

Módulos no Python

A documentação do Python estabelece que um módulo é um arquivo que contém definições e instruções em Python. De fato, você pode abrir qualquer editor de textos, escrever uma instrução em Python, salvar o arquivo com a extensão .py e isto já é um módulo Python.
Os módulos não só armazenam os comandos como também permitem que você divida o seu programa em partes para melhorar o controle, a manutenção e a reutilização do código do programa.
Além disso, existe uma infinidade de módulos que acompanham a instalação do Python ou que podem ser obtidos de terceiros, e que você pode utilizar livremente nos seus projetos.
Vejamos alguns exemplos de como aproveitar melhor esta funcionalidade.
Abaixo, temos um arquivo meu_modulo.py:

#Código em Python 3

valor_base = 10
valor_max = 50

def calcula(num1, num2):
    if (num1 * num2) > valor_max:
        print ("inválido")
    else:
        print ("válido")

O módulo acima possui duas variáveis ("valor_base" e "valor_max"). Ele também possui uma função "calcula" que recebe dois argumentos ("num1" e "num2"). Caso a multiplicação dos argumentos resulte em um valor maior do que o valor da variável "valor_max", a função imprime "inválido", do contrário, imprime "válido".
Agora, se você executar este módulo obviamente não obterá nenhum resultado, uma vez que tudo o que essas linhas fazem é definir variáveis e uma função que não é chamada.
Vamos criar um novo arquivo que irá interagir com este módulo.
Abaixo, o arquivo testa_modulo.py salvo no mesmo diretório do arquivo anterior:

#Código em Python 3

import meu_modulo

meu_valor = 5

meu_modulo.calcula(meu_modulo.valor_base, meu_valor) 

Ao executar este arquivo o interpretador do Python irá imprimir "válido". Caso você altere o valor da variável "meu_valor" para 6, o resultado será "inválido".
O exemplo acima mostra como importar módulos e utilizar suas funções.
Para importar o módulo criado, utilizamos o comando "import" seguido do nome do módulo, que é o nome do arquivo sem a extensão .py.
Ao importar o meu_modulo, você automaticamente possui acesso às variáveis e à função definidas nele, da forma como é mostrada no exemplo.
Veja esta variação do arquivo testa_modulo.py:
#Código em Python 3
from meu_modulo import calcula

meu_valor = 5
valor_base = 10

calcula(valor_base, meu_valor) 
Observe que, mais uma vez, o interpretador irá imprimir "válido" e, alterando a variável "meu_valor" para 6, imprimirá "inválido". O mesmo comportamento do exemplo anterior.
No entanto, houve uma mudança em nosso comando de importação.
No exemplo acima, estamos importando apenas a função "calcula" do módulo "meu_modulo". Isto significa que a variável "valor_base" do módulo não está acessível, por isso tivemos que definir a variável diretamente no arquivo que executamos. Note que os nomes dos argumentos definidos no momento em que chamamos a função "calcula" foram definidos assim para fins didáticos. O resultado seria o mesmo se ao invés de criar as variáveis, simplesmente chamássemos a função desta forma: "calcula(10, 5)".
Esta forma de importação é útil quando possuímos um módulo com diversas funções. Se em um caso específico precisarmos apenas de uma determinada função deste módulo, não faz sentido importar o módulo inteiro. Se precisarmos de duas funções podemos utilizar o comando: "from meu_modulo import funcao_um, funcao_dois".
Veja a seguir outros dois exemplos do arquivo meu_modulo.py:

#Código em Python 3
from meu_modulo import calcula as c

meu_valor = 5
valor_base = 10

c(valor_base, meu_valor)
#Código em Python 3
import meu_modulo

meu_valor = 5
c = meu_modulo.calcula

c(meu_modulo.valor_base, meu_valor)
Estes são dois exemplos de como definir um alias (apelido) para o módulo ou função que importamos. Isto pode facilitar o trabalho com os módulos e é uma solução para quando a função ou módulo importado possui o mesmo nome que algum objeto interno.
Abaixo, outro exemplo sobre importação de módulos no Python:

#Código em Python 3
import meu_modulo

meu_valor = 6
meu_modulo.valor_max = 100

meu_modulo.calcula(meu_modulo.valor_base, meu_valor) 
Ao importar um módulo, você não só tem acesso às variáveis definidas nele como também pode modificá-las para obter um resultado diferente.
O exemplo acima é semelhante a outro mostrado anteriormente, mas desta vez a variável "valor_max" que tem valor padrão definido como 50 no módulo, foi alterada para 100 no nosso arquivo de teste. Como resultado, o interpretador Python irá imprimir "válido".
Note que neste caso, o valor 100 que definimos é válido apenas dentro do escopo do arquivo testa_modulo.py. Assim, se importarmos o meu_modulo em outro arquivo, a variável "valor_max" continua com o valor padrão 50.

Considerações finais 

Para importar um módulo ele deve estar no mesmo diretório que o arquivo onde o comando import está, ou então em algum diretório do PYTHONPATH.


Nenhum comentário:

Postar um comentário