Submódulo 4: Módulos e organização de código: importação, biblioteca padrão e módulo próprio
Site: | Lumina |
Curso: | Python para Iniciantes: Lógica e Programação |
Livro: | Submódulo 4: Módulos e organização de código: importação, biblioteca padrão e módulo próprio |
Impresso por: | Usuário visitante |
Data: | quarta-feira, 17 set. 2025, 21:06 |
Descrição
Este submódulo aprofunda a organização de código em Python, explorando importação, namespace, uso da biblioteca padrão e a criação de módulos próprios. Vamos conectar esses conceitos à construção de projetos reutilizáveis, o que facilita a leitura, a manutenção e a apresentação de portfólio para oportunidades de carreira.
Organização de código: imports, namespace e proteção de testes
🎯 Organização de código: imports, namespace e proteção de testes
Vamos entender por que dividir o código em módulos facilita a leitura, a reutilização e a manutenção. Relembrando o que vimos até agora, a linguagem Python trabalha com um sistema de importação que busca módulos no ambiente de execução e os disponibiliza para o seu script.
O conceito de namespace explica como Python resolve nomes: cada módulo tem seu próprio espaço de nomes, o que evita conflitos entre funções, classes e variáveis com o mesmo nome.
Ao usar import, você carrega o módulo inteiro e acessa seus elementos com o prefixo do módulo. Com from ... import ..., você traz apenas o que precisa, tornando o código mais conciso. Usar alias (por exemplo import math as m
) ajuda a reduzir o esforço de digitação e a evitar conflitos. Por fim, o bloco if __name__ == '__main__' permite que o código seja testado como script sem ser executado ao importar o módulo.
# Exemplo de importação e alias
import math as m
from math import sqrt
def raiz_quadrada(x):
return sqrt(x)
if __name__ == '__main__':
print(raiz_quadrada(9)) # saída: 3.0
print(m.pi) # saída: 3.14159...
Agora, pense no seu projeto: você pode criar um módulo próprio (por exemplo, utils.py) para armazenar funções utilitárias compartilhadas entre scripts. Assim, você reduz duplicação e facilita testes e refatoração.
Desafio 1: crie um arquivo utils.py com pelo menos 2 funções utilitárias (por exemplo, saudacao e soma). Em seguida, crie um script main.py que importa essas funções e as utiliza. Rode o script diretamente para ver a saída; depois importe-as sem executar o main automaticamente.
Curiosidade: você já viu como o sistema de importação do Python pode localizar módulos em várias pastas? O mecanismo usa sys.path e pode ser estendido com caminhos adicionais ou pacotes instalados.
Biblioteca padrão e criação de módulos próprios
🎯 Biblioteca padrão e módulos próprios
Neste submódulo, usamos módulos da biblioteca padrão como math, datetime e exploramos como importá-los. Por exemplo, podemos fazer import math as m
ou from math import sqrt
para ter acesso direto a sqrt. Cada módulo traz funções úteis já prontas, evitando reinventar a roda.
# Exemplo de uso de módulos da biblioteca padrão
import math as m
from math import sqrt
print(m.pi)
print(sqrt(16))
Além disso, vamos criar um módulo próprio simples, como utils.py
, com funções úteis que poderão ser usadas por vários scripts. Em seguida, veremos como importá-lo em outros arquivos.
Pacotes simples e organização de projeto
🎯 Pacotes simples e organização de projeto
Um pacote é um diretório que contém módulos Python e um arquivo __init__.py
(pode ficar vazio). Pacotes permitem organizar o código em unidades reutilizáveis. Por exemplo, podemos ter a estrutura portfolio/utils.py
e importar de forma conveniente em scripts maiores.
# portfolio/__init__.py (pode ficar vazio)
#portfolio/utils.py
def validar_numero(n):
return isinstance(n, (int, float)) and n >= 0
# main.py
from portfolio.utils import validar_numero
print(validar_numero(5))
Além disso, discutiremos como organizar módulos em pacotes simples para facilitar a leitura e a reutilização, preparando o terreno para um portfólio profissional.
🎯 Exercícios
🎯 Exercícios: Módulos e organização de código: importação, biblioteca padrão e módulo próprio
Teste seus conhecimentos com estas questões de múltipla escolha. Cada questão tem apenas uma resposta correta.
O que é o namespace em Python e por que cada módulo tem seu próprio espaço de nomes para evitar conflitos?
Ao usar import math, como você acessa a função sqrt?
Qual é o efeito de usar 'from math import sqrt' em relação aos nomes disponíveis no namespace?
O que torna um diretório um pacote Python e permite importar seus módulos com 'from pacote import modulo'?
Qual é a finalidade do bloco if __name__ == '__main__' em um script Python?