Resumo: neste tutorial, você aprenderá sobre módulos Python, como importar objetos de um módulo e como desenvolver seus módulos.
Introdução aos módulos Python
Um módulo é um pedaço de software que tem uma funcionalidade específica. Um módulo Python é um arquivo que contém código Python.
Por exemplo, ao criar um aplicativo de carrinho de compras, você pode ter um módulo para calcular preços e outro para gerenciar os itens do carrinho. Cada módulo é um arquivo de código-fonte Python separado.
Um módulo tem um nome especificado pelo nome do arquivo sem a extensão .py
. Por exemplo, se você tiver um arquivo chamado pricing.py
, o nome do módulo será pricing
.
Escrevendo módulos Python
Primeiro, crie um novo arquivo chamado pricing.py
e adicione o seguinte código:
# pricing.py
def get_net_price(price, tax_rate, discount=0):
return price * (1 + tax_rate) * (1-discount)
def get_tax(price, tax_rate=0):
return price * tax_rate
O módulo de precificação possui duas funções que calculam o preço líquido e o imposto a partir do preço de venda, taxa de imposto e desconto.
Importando objetos do módulo
Para usar objetos definidos em um módulo de outro arquivo, você pode usar a instrução import
.
A instrução import
tem várias formas que discutiremos nas próximas seções.
1) import <module_name>
Para usar objetos definidos em um módulo, você precisa importar o módulo usando a seguinte instrução import
:
import module_name
Por exemplo, para usar o módulo pricing
no arquivo main.py
, use a seguinte instrução:
import pricing
Quando você importa um módulo, o Python executa todo o código do arquivo correspondente. Neste exemplo, o Python executa o código do arquivo pricing.py
. Além disso, o Python adiciona o nome do módulo ao módulo atual.
Este nome de módulo permite acessar funções, variáveis, etc. do módulo importado no módulo atual. Por exemplo, você pode chamar uma função definida no módulo importado usando a seguinte sintaxe:
module_name.function_name()
Veja a seguir como usar a função get_net_price()
definida no módulo pricing
no arquivo main.py
:
# main.py
import pricing
net_price = pricing.get_net_price(
price=100,
tax_rate=0.01
)
print(net_price)
Saída:
101.0
2) import <module_name> como new_name
Se você não quiser usar o pricing
como identificador no main.py
, você pode renomear o nome do módulo para outro como segue:
import pricing as selling_price
E então você pode usar o selling_price
como o identificador no main.py
:
net_price = selling_price.get_net_price(
price=100,
tax_rate=0.01
)
3) from <module_name> import <nome>
Se você deseja referenciar objetos em um módulo sem prefixar o nome do módulo, você pode importá-los explicitamente usando a seguinte sintaxe:
from module_name import fn1, fn2
Agora, você pode usar as funções importadas sem especificar o nome do módulo assim:
fn1()
fn2()
Este exemplo importa a função get_net_price()
do módulo pricing
:
# main.py
from pricing import get_net_price
e use a função get_net_price()
do módulo pricing
:
# main.py
from pricing import get_net_price
net_price = get_net_price(price=100, tax_rate=0.01)
print(net_price)
4) from <module_name> import <name> as <new_name>: renomeie os objetos importados
É possível renomear um nome importado para outro usando a seguinte instrução import
:
from <module_name> import <name> as <new_name>
O exemplo a seguir renomeia a função get_net_price()
do módulo pricing
para calculate_net_price()
função:
from pricing import get_net_price as calculate_net_price
net_price = calculate_net_price(
price=100,
tax_rate=0.1,
discount=0.05
)
5) from <module_name> import *: importa todos os objetos de um módulo
Para importar todos os objetos de um módulo, você pode usar a seguinte sintaxe:
from module_name import *
Esta instrução import
importará todos os identificadores públicos, incluindo variáveis, constantes, funções, classes, etc., para o programa.
No entanto, não é uma boa prática, pois se os módulos importados tiverem o mesmo objeto, o objeto do segundo módulo substituirá o primeiro. O programa pode não funcionar como você esperaria.
Vejamos o seguinte exemplo.
Primeiro, crie um novo arquivo chamado product.py
e defina a função get_tax()
:
# product.py
def get_tax(price):
return price * 0.1
Ambos os módulos product
e pricing
têm a função get_tax()
. No entanto, a função get_tax()
do módulo product
possui apenas um parâmetro enquanto a função get_tax()
do módulo pricing
possui dois parâmetros.
Em segundo lugar, importe todos os objetos dos módulo pricing
e product
e use a função get_tax()
:
from pricing import *
from product import *
tax = get_tax(100)
print(tax)
Como a função get_tax()
do módulo product
substitui a função get_tax()
do módulo pricing
, você obtém o tax
com um valor de 10.
Resumo
- Um módulo é um arquivo de código-fonte Python com a extensão
.py
. O nome do módulo é o nome do arquivo Python sem a extensão. - Para usar objetos de um módulo, você os importa usando a instrução
import
.