Sumário Introdução 1 Capítulo 1. Rápida Introdução à Programação Procedural 7 Criando e Executando Programas Python 7 O Lindo Coração do Python 12 Parte #1: Tipos de Dados 12 Parte #2: Referência de Objeto 14 Parte #3: Tipos de Dados de Coleção 16 Parte #4: Operações Lógicas 19 Parte #5: Comandos de Controle de Fluxo 23 Parte #6: Operadores Aritméticos 28 Parte #7: Entrada/Saída 31 Parte #8: Criando e Chamando Funções 34 Exemplos 36 bigdigits.py 36 generate_grid.py 39 Sumário 42 Exercícios 44 Capítulo 2. Tipos de Dados 47 Identificadores e Palavras-Chave 47 Tipos Integrais 50 Inteiros 51 Booleanos 53 Tipos de Ponto-Flutuante 54 Números de Ponto-Flutuante 55 Números Complexos 58 Números Decimais 59 Strings 61 Comparando Strings 63 Fatiamento e percorrimento de strings 64 Operadores e métodos de String 67 vii BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 7 17/04/2013 09:49:16
Formatando Strings com o Método str.format() 74 Codificação de Caracteres 85 Exemplos 88 quadratic.py 88 csv2html.py 90 Sumário 95 Exercícios 97 Capítulo 3. Tipos de Dados de Coleção 99 Tipos Sequenciais 99 Tuplas 100 Tuplas Nomeadas 103 Listas 104 Tipos de Conjunto 112 Conjuntos 112 Conjuntos Congelados 116 Tipos de Mapeamento 117 Dicionários 118 Dicionários Padrão 126 Iterando, Copiando Coleções 127 Iteradores, Operações Iteráveis e Funções 128 Copiando Coleções 136 Exemplos 138 generate_usernames.py 138 statistics.py 142 Sumário 146 Exercícios 147 Capítulo 4. Estrutura de Controle e Funções 149 Estruturas de Controle 149 Ramificações Condicionais 149 Loops 151 Manipulação de Exceções 153 Capturando e Lançando Exceções 153 Exceções Personalizadas 158 Funções Personalizadas 161 Nomes e Docstrings 166 Desempacotamento Argumentos e Parâmetros 167 Acessando Variáveis no Escopo Global 170 viii BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 8 17/04/2013 09:49:17
Funções Lambda 172 Asserções 173 Exemplo: make_html_skeleton.py 175 Sumário 181 Exercícios 182 Capítulo 5. Módulos 185 Módulos e Pacotes 185 Pacotes 189 Módulos Personalizados 192 Visão Geral da Biblioteca Padrão do Python 202 Manipulação de String 202 Programando em Linha de Comando 204 Matemática e Números 205 Hora e Data 205 Algoritmos e Tipos de Dados de Coleção 207 Formatos de Arquivos, Codificação e Persistência de dados 208 Arquivo, Diretório e Manipulação de Processo 211 Programação na Internet e em Redes de Comunicação 214 XML 216 Outros Módulos 217 Sumário 219 Exercício 220 Capítulo 6. Programação Orientada a Objeto 223 Abordagem da Programação Orientada a Objeto 224 Terminologia e Conceitos sobre Orientação a Objeto 225 Classes Personalizadas 228 Atributos e Métodos 228 Herança e Polimorfismo 233 Utilizando Propriedades para Controlar o Acesso aos Atributos 236 Criando Tipos de Dados Completos e Totalmente Integrados 238 Classes de Coleção Personalizadas 251 Criando Classes que Agregam Coleções 251 Criando Classes de Coleção Utilizando Agregação 258 Criando Classes de Coleção Utilizando Herança 265 Sumário 272 Exercícios 274 ix BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 9 17/04/2013 09:49:17
Capítulo 7. Manipulação de Arquivos 277 Escrevendo e Lendo Dados Binários 282 Pickles com Compressão Opcional 282 Dados Binários Brutos com Compressão Opcional 285 Escrevendo e Analisando Arquivos de Texto 294 Escrevendo Texto 295 Analisando Textos 296 Analisando Textos Utilizando Expressões Regulares 299 Escrevendo e Analisando Arquivos XML 302 Árvores de Elementos 302 DOM (Documento de Modelo de Objeto) 306 Escrevendo XML Manualmente 309 Analisando XML com SAX (API Simples para XML) 310 Acesso Aleatório a Arquivos Binários 313 Uma Classe Genérica de Arquivo de Registro Binário 314 Exemplo: O Módulo de Classe BikeStock 322 Sumário 326 Exercícios 327 Capítulo 8. Técnicas de Programação Avançada 329 Aprofundamento em Programação Procedural 330 Utilizando Desvios com Dicionários 330 Expressões Gerador e Funções 331 Execução Dinâmica de Código e Importações Dinâmicas 334 Funções Locais e Recursivas 341 Decoradores de Funções e Métodos 346 Anotações de Funções 350 Aprofundamento em Programação Orientada a Objeto 353 Controlando o Acesso aos Atributos 353 Functors 357 Gerenciador de Contexto 359 Descritores 362 Decoradores de Classe 367 Classes Base Abstrata 370 Herança Múltipla 377 Metaclasses 380 x BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 10 17/04/2013 09:49:17
Programação de Estilo Funcional 384 Aplicação Parcial de Funções 387 Exemplo: Valid.py 388 Sumário 390 Exercícios 392 Capítulo 9. Processos e Threads 395 Delegando Tarefas para Processos 396 Delegando Tarefa com Threads 400 Exemplo: Um Programa que Procura Palavra com Thread 401 Exemplo: Programa que Encontra Arquivos Duplicados com Thread 404 Sumário 409 Exercícios 410 Capítulo 10. Redes de Comunicação 413 Criando um Cliente TCP 414 Criando um Servidor TCP 420 Sumário 427 Exercícios 427 Capítulo 11. Programação com Banco de Dados 431 Bancos de Dados DBM 432 Bancos de Dados SQL 436 Sumário 443 Exercícios 444 Capítulo 12. Expressões Regulares 445 Linguagem da Expressão Regular do Python 446 Caracteres e Classes de Caracteres 446 Quantificadores 447 Agrupando e Capturando 450 Asserções e Sinalizadores 451 O Módulo de Expressão Regular 455 Sumário 464 Exercícios 465 xi BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 11 17/04/2013 09:49:18
Capítulo 13. Introdução à Programação GUI 467 Programas em Estilo de Diálogo 470 Programas em Estilo Janela-Principal 476 Criando uma Janela Principal 477 Criando um Diálogo Personalizado 488 Sumário 491 Exercícios 491 Epílogo 493 Índice 495 xii BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 12 17/04/2013 09:49:18
Lista de Tabelas 2.1. Palavras Reservadas do Python 48 2.2. Operadores Numéricos e Funções 52 2.3. Funções de Conversão de Inteiros 52 2.4. Operadores Inteiros Bitwise 53 2.5. As Funções e Constantes do Módulo Math #1 56 2.6. As Funções e Constantes do Módulo Math #2 57 2.7. Escapes de Strings do Python 62 2.8. Métodos de Strings #1 68 2.9. Métodos de Strings #2 69 2.10. Métodos de Strings #3 70 3.1. Métodos de Listas 106 3.2. Operadores e Métodos de Conjuntos 115 3.3. Métodos de Dicionário 120 3.4. Operadores e Funções Iteráveis Comuns 130 6.1. Métodos Especiais de Comparação 232 6.2. Métodos Especiais Fundamentais 240 6.3. Métodos Especiais Numéricos e Bitwise 243 6.4. Métodos Especiais de Coleções 255 7.1. Métodos Bytes e Bytearray #1 288 7.2. Métodos Bytes e Bytearray #2 289 7.3 Métodos Bytes e Bytearray #3 290 7.4 Métodos e Atributos de Objetos Arquivo ou File #1 316 7.5. Métodos e Atributos de Objetos Arquivo ou File #2 317 8.1. Programação Dinâmica e Funções de Introspecção 339 8.2. Métodos Especiais de Acesso a Atributos 355 8.3. Módulos Númericos de Base Abstrata 371 8.4. As Principais Classes de Base Abstrata do Módulo Collection 373 11.1. Métodos do Objeto de Conexão 437 11.2. Métodos e Atributos do Objeto Cursor DB-API 2.0 439 12.1. Símbolos da Classe de Caracteres 447 xiii BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 13 17/04/2013 09:49:18