Módulos em Python

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *