Desbravando Python - Introdução
in Python on Python, Builtins, Desenvolvimento
Nesse post vamos introduzir uma nova idéia chamado de Desbravando Python, que tem o objetivo de entrar na documentação Python, e abordar de forma simples os seus recursos. Vamos focar na versão 3.5 da linguagem, então se até lá tiver melhorias e novas funcionalidades, saiba que não entrará enquanto conseguir passar por toda a referência da biblioteca que oferece. Vai ser um caminho longo, mas vai ser bem interessante ;)
Poderia partir somente para o básico da ferramenta, mas como uma das destacadas características do Python é suas baterias incluídas, nada mais interessante que aprofundar e entender todas elas (ou pelo menos a maioria rs). Abaixo segue a sequência de posts que compõem a série. Essa ordem foi baseado no índice da documentação, em cada item e/ou subitem, será um post único.
- Funções Built-in
- Constantes Built-in
- Tipos Built-in
- Testando valores verdadeiros
- Operações booleanas - and, or, not
- Comparações
- Tipos numéricos
- Tipos iteradores
- Tipos sequenciais
- Tipos de cadeias de caracteres
- Tipos de sequências binárias
- Tipos de set
- Tipos de mapeamento
- Tipos de gerenciamento de contexto
- Outros tipos built-in
- Atributos especiais
- Exceções built-in
- Classes base
- Exceções concretas
- Avisos
- Hierarquia de exceções
- Serviços de processamento de textos
- string - Operações comuns de string
- re - Operações com expressões regulares
- difflib - Auxiliares para computing deltas
- textwrap - Quebras de texto e preenchimento
- unicodedata - Banco de dados unicode
- stringprep - Preparação de string unicode para Internet
- readline - Interface de linha de comando
- rlcompleter - Função de auto-complete para readline
- Serviços e dados binários
- struct - Tratando valores Python e structs da linguagem C
- codecs - Registro de codecs e classes base
- Tipos de dados
- datetime - Tipos de data e hora básicos
- calendar - Funções gerais de calendários
- collections - Módulo especializado para tipos de dados como dict, list, set e tuple.
- collections.abc - Classes abstratas para containers de dados para collections
- heapq - Módulo para aplicação do algoritmo de heap queue
- bisect - Módulo para aplicação do algoritmo array bisection
- array - Módulo para tratamento eficiente de arrays de valores numéricos
- weakref - Referência weak
- types - Criação de tipos dinamicos e nomes para tipos built-in
- copy - Operações de deep copy e shallow
- pprint - Impressão organizada de dados
- reprlib - Implementação alternativa do repr()
- enum - Suporte para enumerations
- Módulos matemáticos e numéricos
- numbers - Base de classes abstratos para outras operações numéricas
- math - Funções matemáticas
- cmath - Funções matemáticas para número complexos
- decimal - Módulo para suporte de números decimais e flutuantes
- fractions - Números racionais
- random - Geração de números pseudo-aleatórios
- statistics - Funções matemáticas para estatistica
- Módulos para programação funcional
- itertools - Funções para criação de iteradores e loopings eficientes
- functools - Funções de primeira ordem e operações de objetos callable
- operator - Operações padrões como funções
- Acesso de arquivos e diretórios
- pathlib - Caminho do sistema de arquivos orientado a objetos
- os.path - Manipulações comuns de caminho de diretórios
- fileinput - Iteração de linhas sobre multiplos input streams
- stat - Interpretando resultados do stat()
- filecmp - Comparações de arquivos e diretórios
- tempfile - Gerando arquivos e diretórios temporários
- glob - Estilo Unix de padrões para caminho de diretórios
- fnmatch - Padrões de comparação para nome de arquivos Unix
- linecache - Acesso randômico de linhas de textos
- shutil - Operação de arquivos de alto nível
- macpath - Funções de manipulação de caminhos para Mac OS 9
- Persistência de dados
- pickle - Serialização de objetos Python
- copyreg - Funções para suporte de registros pickle
- shelve - Persistência de objetos Python
- marshal - Serialização de objetos internos do Python
- dbm - Interface para “base de dados” Unix
- sqlite3 - Interface DB-API 2.0 para banco de dados SQLite
- Arquivamento e compressão de dados
- zlib - Compressão compatível com gzip
- gzip - Suporte para arquivos gzip
- bz2 - Suporte para compressão bzip2
- lzma - Compressão usando algoritmo LZMA
- zipfile - Trabalhando com arquivos ZIP
- tarfile - Leitura e escrita de arquivos tar
- Formatos de arquivos
- csv - Leitura e escrita de arquivos CSV
- configparser - Parseamento de arquivos de configuração
- netrc - Processamento de arquivos netrc
- xdrlib - Codificação e Decodificação de dados XDR
- plistlib - Geração e parseamento de arquivos .plist para Mac OS X
- Serviços de criptografia
- hashlib - Tratamento de mensagens e hashes seguras
- hmac - Hashing chaveada para mensagens de autenticação
- Serviços genéricos de Sistemas Operacionais
- os - Interface diversos do Sistema Operacional
- io - Ferramentas base para trabalho com streams
- time - Acesso a tempo e conversões
- argparse - Parseamento de opções e linha de comando, argumentos e subcomandos
- getopt - Parseamento no estilo C para opções de linha de comando
- logging - Facilitador de logging para Python
- logging.config - Configuração de logging
- logging.handlers - Manipulação de logging
- getpass - Entrada de senha portável
- curses - Manipulação de caracteres para displays
- curses.textpad - Widget de entrada de texto para programas cursivos
- curses.ascii - Pilha de painel de extensão para curses
- platform - Acesso aos dados da plataforma
- errno - Padrão de símbolos de sistema errno
- ctypes - Biblioteca de funções externas para Python
- Execução concorrente
- threading - Paralelismo baseado em thread
- multiprocessing - Paralelismo baseado em processo
- O pacote concurrent
- concurrent.futures - Executando tarefas paralelas
- subprocess - Gerenciamento de subprocessos
- sched - Agendamento de eventos
- queue - Classe de file sincronizada
- dummy-threading - Substituto para o módulo threading
- thread - API baixo nível para threading
- dummy-thread - Substituto para o módulo thread
- Processo de comunicação e rede
- socket - Interface de rede de baixo nível
- ssl - Wrapper TLS/SSL para objetos socket
- select - Módulo par multiplexing de I/O de alto nível
- selectors - Multiplexing de I/O de alto nível
- asyncio - I/O assíncrono, loop de eventos, coroutines e tarefas
- asynchat - Comandos de socket assíncrono para handler de comando/resposta
- signal - Definição de manipulador para eventos assíncronos
- nmap - Suporte de arquivo memory-mapped
- Manipulação de dados da Internet
- email - Pacote para manipulação MIME e e-mail
- json - Codificação e decodificação JSON
- mailcap - Manipulação de arquivos mailcap
- mailbox - Manipulação no mailboxes em vários formatos
- mimetypes - Mapeamento de nome de arquivos para tipos MIME
- base64 - Codificando dados de Base16, Base32, Base64, Base85
- binhex - Codificação e decodificação de arquivos binhex4
- binascii - Conversão entre ASCII e dados binários
- quopri - Codificação e decodificação de dados de extensão de e-mail
- uu - Codificação e decodificação e arquivos uuencode
- Ferramentas de processamento de marcação estruturada (Structured Markup)
- html - Suporte a linguagem HTML
- html.parser - Parseamento de HTML e XHTML
- html.entities - Definições de entidades gerais do HTML
- Módulos de processamento XML
- xml.etree.ElementTree - API do ElementTree XML
- xml.dom - API do Document Object Model (DOM)
- xml.dom.minidom - Implementação mínima do DOM
- xml.dom.pulldom - Suporte para gerar árvore parcial do DOM
- xml.sax - Suporte para parseamento do SAX2
- xml.sax.handler - Classes base para manipulação do SAX
- xml.sax.saxutils - Utilitários SAX
- xml.sax.xmlreader - Interface para parsers XML
- xml.parsers.expat - Parseamento rápido de XML usando Expat
- Protocolo para Internet e Suporte
- webbrowser - Conveniente controlador web-browser
- cgi - Suporte para Common Gateway Interface (CGI)
- cgitb - Gerenciador de Traceback para scripgs CGI
- wsgiref - Implementação e utilitários da referência WSGI
- urllib - Módulo para manipulação de URLs
- urllib.request - Biblioteca para abertura de URLs
- urllib.response - Classe de resposta usado pelo urllib
- urllib.parse - Parseamento de URLs dentro de componentes
- urllib.error - Classes de exceção disparados pelo urllib.request
- urllib.robotparser - Parseamento para robot.txt
- http - Módulo HTTP
- http.client - Cliente para protocolo HTTP
- ftplib - Cliente do protocolo FTP
- poplib - Cliente do protocolo POP3
- imaplib - Cliente do protocolo IMAP4
- nntplib - Cliente do protocolo NNTP
- smtplib - Cliente do protocolo SMTP
- smtpd - Servidor SMTP
- telnetlib - Cliente Telnet
- uuid - Objetos UUID de acordo com o RFC 4122
- socketserver - Um framework para servidores de rede
- http.server - Servidores HTTP
- http.cookies - Gerenciamento do estado HTTP
- http.cookiejar - Manipulação de cookies para clientes HTTP
- xmlrpc - Servidor XMLRPC e módulos cliente
- xmlrpc.client - Acesso do cliente XML-RPC
- xmlrpc.server - Servidores XML-RPC básicos
- ipaddress - Biblioteca de manipulação IPv4/IPv6
- Serviços de multimídia
- audioop - Manipulação de dados de áudio raw
- aifc - Leitura e escrita de arquivos AIFF e AIFC
- sunau - Leitura e escrita de arquivos Sun AU
- wave - Leitura e escrita de arquivos WAV
- chunk - Leitura de dados do IFF chunked
- colorsys - Conversões entre sistemas de cores
- imghdr - Determinação do tipo de imagem
- sndhdr - Determina o tipo de som
- ossaudiodev - Acesso de dispositivos de áudio OSS compatíveis
- Internacionalização
- gettext - Serviços de Internacionalização multilíngue
- locale - Serviços de Internacionalização
- Frameworks de Programas
- turtle - Gráficos Turtle
- cmd - Suporte a interpretador de comando orientados a linha
- shlex - Análise léxica simples
- Interface gráfica do utilizador com Tk
- tkinter - Interface python com Tcl/Tk
- tkinter.ttk - Widgets tematizados para Tk
- tkinger.tix - Extensão de widgets para Tk
- tkinter.scrolledtext - Widget de texto com scroll
- IDLE - Ambiente integrado de desenvolvimento Python para Aprendizado
- Outros pacotes de interface gráfica do utilizador
- Ferramentas de desenvolvimento
- typing - Suporte para type hints
- pydoc - Gerador de documentação and sistema de ajuda online
- doctest - Exemplos de testes interativos para Python
- unittest - Framework de testes unitários
- unittest.mock - Biblioteca de objetos “mocados”
- unittest.mock - Primeiros passos
- 2to3 - Tradução do código do Python 2 para 3 automático
- test - Pacote de testes de regressão para Python
- test.support - Utilitários para ambiente de teste Python
- Debugging e Profiling
- bdb - Framework debugger
- faulthandler - Descarregamento de traceback
- pdb - Debugger Python
- Profilers python
- timeit - Mensuração do tempo de execução de pequenos pedaços de código
- trace - Módulo que permite rastrear execução do programa
- tracemalloc - Módulo que permite rastrear blocos de memória alocados pelo Python
- Distribuição e empacotamento do software
- distutils - Construindo e instalando módulos Python
- ensurepip - Inicialização o instalador pip
- venv - Criação de ambientes virtualizados
- zipapp - Módulo que disponibiliza ferramenta para criacao de arquivo zip com código Python
- Serviços de execução Python
- sys - Funções e parametros específicos do sistemas
- sysconfig - Provêm acesso acesso a informações de configuração do Python
- builtins - Objetos built-in
- –main– - Ambiente de script alto nível
- warnings - Controle de alertas
- contextlib - Utilitários para declaração de contexto usando with
- abc - Base de classes abstratas
- atexit - Manipulação de saída
- traceback - Imprimir ou recuperar stack traceback
- –future– - Definições de declarações futuras
- gc - Interface para Garbage Collector
- inspect - Inspeção de objetos vivos
- site - Configurações específica de pesquisa de módulos locais
- fpectl - Controle de exceção de pontos flutuantes
- Interpretadores customizados Python
- code - Classe base do interpretador
- codeop - Código python do compilador
- Importando módulos
- zipimport - Importando módulos de arquivos ZIP
- pkgutil - Extensão de pacote utilitário
- modulefinder - Procura de módulos usados pelo script
- runpy - Localizando e executando módulos Python
- importlib - A implementação do import
- Serviços da linguagem Python
- parser - Acesso python para parse tree
- ast - Syntax tree abstrato
- symtable - Acesso a tabela de símbolos do compilador
- symbol - Constantes usados com parse trees no Python
- token - Constantes usados com parse trees no Python
- keyword - Testes para palavras-chave do Python
- tokenize - Tokenizador para código-fonte Python
- tabnanny - Detecção de endentação ambígua
- pyclbr - Classe python de suporte a a informações sobre classes, métodos a funções de alto nível
- py-compile - Compilação do código fonte Python
- compileall - Biblioteca de compilação binária com Python
- dis - Disassembler para bytecodes Python
- pickletools - Ferramenta para desenvolvedores pickle
- Serviços diversos
- formatter - Formatando saídas genéricas
- Serviços específicos para MS Windows
- msilib - Leitura e escrita de arquivos Microsoft Installer
- msvcrt - Rotinas úteis para MS VC++ runtime
- winreg - Acesso aos registros Windows
- winsound - Interface de som para Windows
- Serviços especifícos Unix
- posix - Chamadas de sistema mais comuns para o padrão POSIX
- pwd - Banco de dados de senhas
- spwd - Banco de dados de senhas no estilo shadow
- grp - Banco de dados de grupos
- crypt - Função para chacagem de senhas Unix
- termios - Controle de tty no estilo POSIX
- tty - Funções para controle de terminal
- pty - Utilitários para pseudo-terminais
- fcntl - Chamadas de sistemas de fcntl e ioctl
- pipes - Interface para shell pipelines
- resource - Informações de uso de recursos
- nis - Interface para Sun’s NIS (Yellow Pages)
- syslog - Biblioteca de rotinas para acesso ao syslog Unix
- Módulos substituídos
- optparse - Parser de opções para linhas de comando
- imp - Acesso interno ao import
Depois desse índice gigantesco, pode parecer que sou louco. Mas como falei, é uma grande aventura, e o nome da série não foi pensado atoa. Assim, espero que consiga completar essa jornada, mas para isso um desafio de cada vez ;)
Até o próximo post sobre Funções Built-in: Parte 01.