Buscar

Aula 10 - Programação Rad - DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES EM PYTHON

Prévia do material em texto

27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 1/13
Programação RAD
Aula 10: Bibliotecas prede�nidas em Python
INTRODUÇÃO
Normalmente, quando usamos um programa, necessitamos de recursos que vão além dos básicos. 
Por exemplo, para montar uma planilha eletrônica no Excel, no campo de Estatística, precisamos conhecer o Solver, além
de funções estatísticas que �cam escondidas no software. Um especialista na área sabe procurá-las e usá-las. 
Nas linguagens de programação, não é tão diferente assim. Java tem sua biblioteca padrão e estendida. C#, PHP e Python
contam com uma biblioteca padrão muito poderosa, que você pode estender com seus próprios módulos. 
Imagine que, depois de criar as funções, as classes e os programas, você tenha se esquecido de salvar o trabalho. Na
próxima sessão do IDLE, tudo será, então, perdido. Em Python, o recurso dos módulos nos ajuda a resolver a questão. 
A empresa que usa essa linguagem emprega os módulos para separar o serviço e seus projetos em unidades de código
funcionais e organizadas. 
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 2/13
Nesta aula, vamos aprender a criar módulos e usar outros prede�nidos, bem como desenvolver pacotes e descobrir como
eles se comportam. 
Bons estudos.
OBJETIVOS
Listar as principais bibliotecas prede�nidas de Python.
Criar módulos e pacotes.
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 3/13
MÓDULOS
Módulo é um arquivo que contém código Python, no qual é possível encontrar de�nições de classes, funções ou até
sequência de comandos. Normalmente, há uma extensão .py associada a esse arquivo. 
Os programas que �zemos antes e que foram salvos são, de certa forma, módulos. A diferença entre ambos é mais
semântica do que sintática, pois não organizamos os arquivos e seu conteúdo para trabalhar como módulos.
Vamos aprender a criar um?
Imagine que você está envolvido em um projeto relacionado com a área de transportes. Com frequência, precisará
calcular:
Distâncias
Valores de frete
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 4/13
O que fazer?
Você pode criar uma ou mais classes, empacotá-las em um arquivo .py e chamá-lo de “transportes.py”. Seu módulo está
pronto!
O arquivo poderia ter a seguinte estrutura:
# arquivo: transportes.py
def calcula_frete():
 #código da função
def calcula_imposto():
 #código da função
def distancia():
Impostos com nota
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 5/13
 #código da função
Neste exemplo, o arquivo apresenta três funções: 
• calcula_frete(); 
• calcula_imposto(); 
• distancia().
Poderia haver mais funções, de�nições de classe e até mesmo blocos executáveis. 
Para usar o módulo em seus programas ou dentro do IDLE, use o comando import, assim como �zemos na aula anterior
com o programa da calculadora.
Veja um exemplo:
import transportes
# neste caso estamos importando TUDO que estiver dentro
do módulo
from transportes import distancia
# neste caso, do módulo transportes.py só vamos importar
a função distancia(), as outra
# não serão importadas
from transportes import *
# neste caso, importa tudo que estiver no módulo
Este exemplo é bem autoexplicativos, mas há um detalhe na última forma de importação: quando usamos o símbolo do
asterisco (“*”), tudo o que foi de�nido dentro do módulo será importado, EXCETO os nomes que começam com o
caractere underline (“_”). Não é muito comum usar o asterisco (“*”). 
Aprenda, a seguir, a aplicar a função de um módulo:
>>> transportes.distancia()
# coloque o nome do módulo e o recurso que deseja
# também é possível atribuir uma variável, assim:
>>> dist = transportes.distancia()
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 6/13
>>> dist
Para saber os nomes que existem dentro de um módulo, use a função dir():
>>> dir(os) 
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND',
'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT',
'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 
'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC',
'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO',
'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 
'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK',
'_Environ', '__all__', '__builtins__', '__cached__',
'__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__spec__', '_execvpe', '_exists',
'_exit', '_fspath', '_get_exports_list', '_putenv',
'_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 
'altsep', 'chdir', 'chmod', 'close', 'closerange',
'cpu_count', 'curdir', 'defpath', 'device_encoding',
'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 
'execl', 'execle', 'execlp', 'execlpe', 'execv',
'execve', 'execvp', 'execvpe', 'extsep', 'fdopen',
'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 
'ftruncate', 'get_exec_path', 'get_handle_inheritable',
'get_inheritable', 'get_terminal_size', 'getcwd',
'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 
'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek',
'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir',
'path', 'pathsep', 'pipe', 'popen', 
'putenv', 'read', 'readlink', 'remove', 'removedirs',
'rename', 'renames', 'replace', 'rmdir', 'scandir',
'sep', 'set_handle_inheritable', 'set_inheritable', 
'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st',
'startfile', 'stat', 'stat_float_times', 'stat_result',
'statvfs_result', 'strerror', 'supports_bytes_environ', 
'supports_dir_fd', 'supports_effective_ids',
'supports_fd', 'supports_follow_symlinks', 'symlink',
'sys', 'system', 'terminal_size', 'times',
'times_result', 
'truncate', 'umask', 'uname_result', 'unlink',
'urandom', 'utime', 'waitpid', 'walk', 'write'] 
PACOTES
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 7/13
Pacote é uma espécie de coleção de módulos. 
No exemplo da transportadora, podemos criar pacotes separados pelo setor da empresa ou por uma área desse setor.
Tudo vai depender, novamente, da arquitetura do sistema que você está desenvolvendo.
Entender módulos e pacotes é fundamental para você desbravar os inúmeros frameworks que existem em Python: para
programação de web, aplicações desktop e até dispositivos móveis.
Os módulos e pacotes servem para organizarmos nosso trabalho e nossos projetos. A grande diferença física
fundamental entre ambos é simples: os módulos são organizados em arquivos, e os pacotes, em pastas. 
Além disso, nos pacotes, temos de incluir um arquivo especial (__init__.py), o qual faz o interpretador Python identi�car os
pacotes que estão sendo usados. Quando o interpretador Python encontra um arquivo desses em uma pasta, ela passa a
ser um pacote.
Observe a seguinte estrutura:
Cada uma das pastas (transportes, �nanceiro, contas_a_pagar, contas_a_receber, logística) contém um arquivo __init__.py
– inclusive a raiz. Logo, criamos, aqui, uma estrutura de pacotes para nosso projeto de transportes. 
Vamos inserir um conteúdo de exemplo no arquivo frete.py:
# -*- coding: utf-8 -*-
def teste():
 print("Testando o arquivo !!!")
Atenção
, 
Logo na primeira linha, colocamos um código meio estranho (coding: utf-8-). Você vai encontrá-la em vários exemplos na internet,
pois é usada para colocar a codi�cação do código-fonte no arquivo em UTF-8. Dessa forma, os acentos e caracteres especiais que
podem aparecer no código são corretamente interpretados.
Agora, suponha que seu Console do DOS esteja na seguinte pasta:
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 8/13
A pasta “transportes” foi criada dentro da pasta “D:\projs”. Em seguida, temos:
Um nívelacima da pasta “transportes”, chamamos o interpretador Python. 
Foram digitados três comandos:
import sys
Como já sabemos, estamos importando este módulo e todos os seus recursos na sessão atual
do interpretador.
sys.path.append(‘d:\projs\transportes’)
Este comando faz com que o pacote “transportes” que criamos anteriormente seja adicionado
em nossa sessão. Assim, a função teste() pode ser usada. Portanto, toda vez que você utilizar
um pacote criado por você, este procedimento deve ser adotado. 
Novamente, cabe, aqui, uma observação sobre arquitetura do software: quando você estiver
envolvido em um projeto Python, é bem provável que use algum framework para auxiliá-lo no
desenvolvimento. 
Os frameworks mais usados possuem mecanismos para fazer esse tipo de importação e
acerto do path de seu projeto.
dir()
Usado para listar os módulos disponíveis na sessão aberta do interpretador. Observe que,
agora, “transportes” está na lista.
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 9/13
O pacote já foi lido, agora queremos usar a função teste() presente dentro do módulo frete.py. Podemos fazer isso por
meio de algumas formas:
Isso é bastante útil e torna os seus programas reusáveis. Mas precisamos tomar alguns cuidados. Novamente, observe a
sequência de comandos:
Executamos o interpretador Python novamente, abrindo uma nova sessão e importamos o pacote “transportes”. Usamos
o dir() para listar os nomes de pacotes disponíveis no momento para o nosso uso. 
Veri�que que “transportes” está na lista. E é aí que devemos tomar cuidado. Podemos achar que simplesmente
importando o pacote “transportes” podemos usar os módulos e sub-módulos que ele contém, mas não é bem assim. 
Lembre-se de que criamos os arquivos __init__.py vazios e de que podemos inicializá-los para incluírem os módulos que
desejamos. Veja:
TENTAMOS USAR O MÓDULO “LOGISTICA” E NÃO DEU CERTO. COMO
PODEMOS RESOLVER ESSE PROBLEMA?
Importando o pacote e módulo
                                                >>>import transportes.logistica.frete 
                                                >>>transportes.logistica.frete.teste() 
                                                Testando o arquivo!!! 
Por meio do from, importando o módulo
                                                >>>from transportes.logistica import frete 
                                                >>>frete.teste() 
                                                Testando o arquivo!!! 
Por meio do from, importando a função
                                                >>>from transportes.logistica.frete import teste 
                                                >>>teste() 
                                                Testando o arquivo!!! 
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 10/13
A melhor forma de resolver isso é empregar a diretiva __all__ dentro dos arquivos __init__.py de nossa estrutura. 
Ao invés de importar os módulos separadamente, podemos aplicar essa diretiva e, por meio dela, importar o que �ca
abaixo da estrutura para melhor uso. 
Por exemplo, no arquivo __init__.py da raiz, podemos incluir o seguinte:
__all__ = ['logistica', 'financeiro']
Perceba que inserimos, aqui, os módulos abaixo da raiz. Isso pode ser feito em cada __init__.py de cada pasta, mudando
apenas as subpastas. No caso do __init__.py da pasta logística, temos:
__all__ = ['conhecimento_eletronico', 'frete','rotas']
Atenção
, 
“conhecimento_eletronico”, “frete” e “rotas” são subpastas (submódulos) de “logistica”.
Dessa forma, o problema é resolvido conforme a execução a seguir:
Observe que, agora, usamos corretamente o import *. Lembre-se: podemos acreditar que from transportes import * faça o
mesmo, mas isso não será possível, pois, neste módulo, importamos “logistica” e “�nanceiro”, e não o módulo “frete”.
Biblioteca padrão
Agora que conhecemos rapidamente o mecanismo de busca e importação de pacotes em Python, vamos tratar, de forma
breve, da biblioteca padrão. 
A biblioteca padrão é distribuída com Python e possui centenas de módulos que fornecem ferramentas para interação
com o sistema operacional, com o próprio interpretador do Python, com a internet etc.
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 11/13
É por isso que essa linguagem possui o slogan: 
 
Batteries included = Já vem com pilhas
Para descobrir tais centenas de módulos, você já conhece o comando: dir(), em que passamos o nome do módulo como
parâmetro. Nós já usamos algumas dessas funções ao longo das aulas, principalmente quando tratamos das strings, cujo
padrão chamamos de expressões regulares.
Saiba Mais
, 
Se usarmos um padrão no qual toda string possa ser escrita somente com letras maiúsculas ou minúsculas, será [A-z].
Normalmente, usamos expressões regulares em validações de entrada de dados. 
Conheça as expressões em Python e seus módulos especí�cos (https://docs.python.org/3/library/re.html).
A seguir, listamos os principais tipos de módulos que a biblioteca padrão possui:
• Texto; 
• Estruturas de dados; 
• Algoritmos; 
• Data e hora; 
• Módulos matemáticos; 
• Sistema de arquivos; 
• Persistência de dados; 
• Compressão de dados e arquivamento; 
• Criptogra�a; 
• Processos e threads;
• Networking; 
• Internet; 
• E-mail; 
https://docs.python.org/3/library/re.html
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 12/13
O uso desses módulos varia de acordo com o projeto. O importante é que você saiba que existe muita ideia pronta em
Python. 
Por exemplo, se você precisar de um programa que faz interface com o SQLite, há módulos especí�cos para esse banco
de dados. Logo, não é necessário criar procedimentos de acesso ou drivers para o SQLite. Isso já foi feito e está
disponível para nós. 
Por essa razão, é muito importante que você navegue e explore o conteúdo da biblioteca padrão.
ATIVIDADE PROPOSTA
Pesquise os módulos necessários para resolver os programas a seguir: 
a) Programa que mostra a versão de Python que você está usando.
Resposta Correta
b) Programa em Python que aceita o raio de um círculo. Calcule sua área.
Resposta Correta
c) Programa que mostra a data e hora atuais.
Resposta Correta
d) Programa que mostra o calendário de um mês e ano lido do usuário.
Resposta Correta
e. Programa que calcula a distância de dois pontos (4,0) e (6,6). Lembre-se de geometria analítica.
• Blocos de construção de programas; 
• Internacionalização e localização; 
• Ferramentas para o desenvolvedor; 
• Funções de runtime; 
• Ferramentas de linguagem; 
• Módulos e pacotes. 
27/06/2022 12:34 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/10/conteudos/1 13/13
Resposta Correta
Glossário
PATH
Caminho de determinada pasta no PC. Se você usa o Windows, a pasta Documentos �ca, normalmente, no seguinte path:
C:\Users\nome_usuario\Documents.

Continue navegando