Luiz Eduardo Borges Novatec
Copyright 2014 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-405-2 MP20141001 Histórico de impressões: Outubro/2014 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário Agradecimentos...11 Sobre o autor...12 Prefácio...13 Capítulo 1 Introdução...14 Características... 14 Histórico...15 Versões...15 Executando programas...16 Tipagem dinâmica... 17 Compilação e interpretação... 17 Modo interativo...18 Ferramentas... 19 Cultura... 21 Capítulo 2 Conceitos básicos...22 Sintaxe...22 Blocos...23 Objetos...25 Controle de fluxo...25 Laços...27 For...27 While...29 Capítulo 3 Tipos de variáveis...30 Números... 31 Texto...34 Listas...40 Tuplas...42 Outros tipos de sequências...44 5
6 Python para Desenvolvedores Dicionários... 46 Verdadeiro, falso e nulo...50 Operadores booleanos...50 Capítulo 4 Funções...52 Capítulo 5 Documentação...58 Capítulo 6 Módulos...60 Escopo de nomes...63 Pacotes...65 Capítulo 7 Biblioteca-padrão...67 Matemática...67 Arquivos e I/O...70 Sistemas de arquivo...72 Arquivos temporários...73 Arquivos compactados... 74 Arquivos de dados...75 Sistema operacional...76 Tempo...78 Expressões regulares... 81 Capítulo 8 Bibliotecas de terceiros...83 Capítulo 9 Exceções...85 Capítulo 10 Introspecção...89 Inspect... 91 Capítulo 11 Geradores...92 Capítulo 12 Programação funcional...95 Lambda...95 Mapeamento...96 Filtragem...97 Redução...98 Transposição...99 List Comprehension...100 Dictionary Comprehension...101 Generator Expression... 102
Sumário 7 Capítulo 13 Decoradores...103 Capítulo 14 Classes...107 Classes abertas...113 Herança simples...114 Herança múltipla...116 Propriedades...119 Descritores... 122 Sobrecarga de operadores... 124 Coleções... 125 Metaclasses... 130 Classes-base abstratas... 133 Decoradores de classe... 134 Capítulo 15 Testes automatizados...136 Capítulo 16 Threads...141 Capítulo 17 Armazenamento de dados...145 Serialização... 145 YAML... 146 JSON... 149 XML... 149 DOM...151 SAX... 152 ElementTree... 154 Banco de dados... 155 DBI... 156 MySQL... 157 SQLite... 158 Firebird...160 PostgreSQL...161 Mapeamento objeto-relacional... 164 NoSQL... 167 Capítulo 18 Aplicações web...171 Cliente web... 173 Framework Pyramid...174
8 Python para Desenvolvedores Capítulo 19 Processamento numérico...180 NumPy... 180 Arranjos... 180 Matrizes... 183 SciPy... 185 Matplotlib... 187 Capítulo 20 Interface gráfica...195 Arquitetura... 195 PyQt... 197 Capítulo 21 Computação gráfica...204 Matrizes versus vetores...205 Processamento de imagem...207 SVG... 213 Imagens em três dimensões...217 VPython...219 PyOpenGL...226 capítulo 22 Processamento distribuído...233 Objetos distribuídos... 235 Capítulo 23 IPython...238 Capítulo 24 Plataformas portáteis...240 Kivy...240 Capítulo 25 Dependências...255 Ambiente virtuais... 255 Empacotamento e distribuição...256 Capítulo 26 Desempenho...258 Apêndice A Integração com aplicativos...266 Blender...266 Game engine... 271 LibreOffice... 273 Excel...277
Sumário 9 Apêndice B Integração com outras linguagens...282 Bibliotecas compartilhadas...282 Apêndice C Exercícios propostos...284 Primeira lista de exercícios (Capítulos 1 a 5)...284 Segunda lista de exercícios (Capítulos 6 a 11)...285 Terceira lista de exercícios (Capítulos 12 a 14)...286 Quarta lista de exercícios (Capítulos 15 a 18)...286 Quinta lista de exercícios (Capítulos 19 a 22)...287 Sexta lista de exercícios (Capítulos 23 a 31)...288 Apêndice D Respostas dos exercícios...289 Respostas da primeira lista de exercícios...289 Respostas da segunda lista de exercícios...293 Respostas da terceira lista de exercícios...299 Respostas da quarta lista de exercícios... 301 Respostas da quinta lista de exercícios...308 Respostas da sexta lista de exercícios...312 Índice remissivo...315