Baixe o app para aproveitar ainda mais
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.
Compartilhar