curso
Trabalhando com módulos em Python
Como iniciante, você começa a trabalhar com Python no interpretador. Mais tarde, quando você precisar escrever programas mais longos, começará a escrever scripts. À medida que seu programa aumenta de tamanho, você pode querer dividi-lo em vários arquivos para facilitar a manutenção e a reutilização do código. A solução para isso são os módulos. Você pode definir suas funções mais usadas em um módulo e importá-lo, em vez de copiar suas definições em diferentes programas. Um módulo pode ser importado por outro programa para que você faça uso de sua funcionalidade. É assim que você também pode usar a biblioteca padrão do Python.
Em termos simples, um módulo é um arquivo que consiste em código Python. Ele pode definir funções, classes e variáveis e também pode incluir código executável. Qualquer arquivo Python pode ser referenciado como um módulo. Um arquivo que contém código Python, por exemplo: test.py
, é chamado de módulo, e seu nome seria test
.
Há vários métodos para escrever módulos, mas a maneira mais simples é criar um arquivo com a extensão .py
, que contém funções e variáveis.
Antes de começar a escrever seus próprios módulos, recomendo que você dê uma olhada em nosso curso Intro to Python for Data Science, que aborda os conceitos básicos da linguagem de programação Python.
Aprenda Python do zero
O módulo de importação em Python
Para usar a funcionalidade presente em qualquer módulo, você precisa importá-lo para o seu programa atual. Você precisa usar a palavra-chave import
junto com o nome do módulo desejado. Quando o interpretador encontra uma instrução import
, ele importa o módulo para o seu programa atual. Você pode usar as funções dentro de um módulo usando um operador de ponto (.
) junto com o nome do módulo. Primeiro, vamos ver como usar os módulos da biblioteca padrão. No exemplo abaixo, o módulo math
é importado para o programa para que você possa usar a função sqrt()
.
import math #You need to put this command,`import` keyword along with the name of the module you want to import
num = 4
print(math.sqrt(num)) #Use dot operator to access sqrt() inside module "math"
Por motivos de eficiência, cada módulo é importado apenas uma vez por sessão do interpretador. Portanto, se você alterar seus módulos, deverá reiniciar o interpretador. Se for apenas um módulo que você deseja testar interativamente, use reload()
, por exemplo: reload(module_name)
.
Como escrever módulos em Python
Agora que você aprendeu a importar um módulo para o seu programa, é hora de escrever o seu próprio módulo e usá-lo em outro programa. Escrever um módulo é como escrever qualquer outro arquivo Python. Vamos começar escrevendo uma função para adicionar/subtrair dois números em um arquivo calculation.py
.
def add(x,y):
return (x+y)
def sub(x,y):
return (x-y)
Se você tentar executar esse script na linha de comando, nada acontecerá porque você não instruiu o programa a fazer nada. Crie outro script Python no mesmo diretório com o nome module_test.py
e escreva o seguinte código nele.
import calculation #Importing calculation module
print(calculation.add(1,2)) #Calling function defined in add module.
Se você executar module_test.py
, verá "3" como saída. Quando o interpretador encontrou a instrução import
, ele importou o módulo calculation
no seu código e, em seguida, usando o operador de ponto, você conseguiu acessar a função add()
.
Maneiras adicionais de importar módulos em Python
Há mais maneiras de importar módulos:
from .. import
declaraçãofrom .. import *
declaração- renomear o módulo importado
from ... import statement
A instrução from..import
permite que você importe funções/variáveis específicas de um módulo em vez de importar tudo. No exemplo anterior, quando você importou calculation
para module_test.py
, as funções add()
e sub()
foram importadas. Mas e se você só precisasse da função add()
em seu código? Aqui está um exemplo para ilustrar o uso de from..import
.
from calculation import add
print(add(1,2))
No exemplo acima, somente a função add()
é importada e usada. Você notou o uso de add()
? Agora você pode acessá-lo diretamente sem usar o nome do módulo. Você também pode importar vários atributos, separando-os com uma vírgula na instrução de importação. Dê uma olhada no exemplo a seguir:
from calculation import add,sub
from ... import * statement
Você pode importar todos os atributos de um módulo usando essa instrução. Isso fará com que todos os atributos do módulo importado fiquem visíveis em seu código.
Aqui está um exemplo para ilustrar o uso de from .. import *
:
from calculation import *
print(add(1,2))
print(sub(3,2))
Observe que, no mundo profissional, você deve evitar usar from..import
e from..import*
, pois isso torna o código menos legível.
Renomeando o módulo importado em Python
Você pode renomear o módulo que está importando, o que pode ser útil nos casos em que você deseja dar um nome mais significativo ao módulo ou quando o nome do módulo é muito grande para ser usado repetidamente. Você pode usar a palavra-chave as
para renomeá-lo. O exemplo a seguir explica como você pode usá-lo em seu programa.
import calculation as cal
print(cal.add(1,2))
Você economizou tempo de digitação ao renomear calculation
como cal
.
Observe que agora você não pode mais usar calculation.add(1,2)
, pois calculation
não é mais reconhecido no seu programa.
Caminho de pesquisa de módulo em Python
Você pode precisar que seus módulos sejam usados em diferentes programas ou projetos e a localização física deles no diretório pode ser diferente. Se quiser usar um módulo que reside em algum outro diretório, você tem algumas opções fornecidas pelo Python.
Quando você importa um módulo chamado calculation
, o interpretador primeiro procura um módulo interno com esse nome. Se não for encontrado, ele procurará um arquivo chamado calculation.py
em uma lista de diretórios fornecida pela variável sys.path
. sys.path
contém esses locais:
-
O diretório que contém o script de entrada (ou o diretório atual)
-
PYTHONPATH
(uma lista de nomes de diretórios com a mesma sintaxe da variável do shellPATH
) -
O padrão dependente da instalação
Suponha que module_test.py
esteja no diretório /home/datacamp/
e que você tenha movido calculation.py
para /home/test/
. Você pode modificar sys.path
para incluir /home/test/
na lista de caminhos, na qual o interpretador Python procurará o módulo. Para isso, você precisa modificar o site module_test.py
da seguinte maneira:
import sys
sys.path.append('/home/test/')
import calculation
print(calculation.add(1,2))
Arquivos compilados por bytes em Python
A importação de um módulo aumenta o tempo de execução dos programas, portanto, o Python tem alguns truques para acelerar esse processo. Uma maneira é criar arquivos compilados em bytes com a extensão .pyc
.
Internamente, o Python converte o código-fonte em um formato intermediário chamado bytecode. Em seguida, ele traduz isso para o idioma nativo do seu computador e o executa. Esse arquivo .pyc
é útil quando você importar o módulo da próxima vez a partir de um programa diferente - será muito mais rápido, pois uma parte do processamento necessário para importar um módulo já foi feita. Além disso, esses arquivos compilados em bytes são independentes de plataforma.
Observe que esses arquivos .pyc
geralmente são criados no mesmo diretório que os arquivos .py
correspondentes. Se o Python não tiver permissão para gravar em arquivos nesse diretório, os arquivos .pyc
não serão criados.
A função dir() do Python
A função dir()
é usada para descobrir todos os nomes definidos em um módulo. Ele retorna uma lista ordenada de cadeias de caracteres contendo os nomes definidos em um módulo.
import calculation
print(test.add(1,2))
print(dir(calculation))
Saída:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'sub']
Na saída, você pode ver os nomes das funções que definiu no módulo, add
& sub
. O atributo __name__
contém o nome do módulo. Todos os atributos que começam com um sublinhado são atributos padrão do Python associados a um módulo.
Conclusão
A criação de um módulo é necessária para um melhor gerenciamento de código e reutilização. O Python fornece a você alguns módulos internos, que podem ser importados usando a palavra-chave import
. O Python também permite que você crie seus próprios módulos e os use em seus programas. Ele fornece a você arquivos compilados em bytes para superar o custo do uso de módulos, o que torna a execução mais rápida. Você pode usar o site dir()
para conhecer os atributos definidos no módulo que está sendo usado em um programa. Isso pode ser usado tanto em módulos predefinidos quanto em módulos definidos pelo usuário.
Se quiser saber mais sobre Python, você pode dar uma olhada no nosso curso Python Intermediário para Ciência de Dados.
Cursos de Python
curso
Introdução à ciência de dados em Python
curso