Sumário Introdução Capítulo 1. Rápida Introdução à Programação Procedural Criando e Executando Programas Python O “Lindo Coração” do Python Parte #1: Tipos de Dados Parte #2: Referência de Objeto Parte #3: Tipos de Dados de Coleção Parte #4: Operações Lógicas Parte #5: Comandos de Controle de Fluxo Parte #6: Operadores Aritméticos Parte #7: Entrada/Saída Parte #8: Criando e Chamando Funções Exemplos bigdigits.py generate_grid.py Sumário Exercícios 7 7 12 12 14 16 19 23 28 31 34 36 36 39 42 44 Capítulo 2. Tipos de Dados Identificadores e Palavras-Chave Tipos Integrais Inteiros Booleanos Tipos de Ponto-Flutuante Números de Ponto-Flutuante Números Complexos Números Decimais Strings Comparando Strings Fatiamento e percorrimento de strings Operadores e métodos de String 47 47 50 51 53 54 55 58 59 61 63 64 67 1 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() Codificação de Caracteres Exemplos quadratic.py csv2html.py Sumário Exercícios 74 85 88 88 90 95 97 Capítulo 3. Tipos de Dados de Coleção Tipos Sequenciais Tuplas Tuplas Nomeadas Listas Tipos de Conjunto Conjuntos Conjuntos Congelados Tipos de Mapeamento Dicionários Dicionários Padrão Iterando, Copiando Coleções Iteradores, Operações Iteráveis e Funções Copiando Coleções Exemplos generate_usernames.py statistics.py Sumário Exercícios 99 99 100 103 104 112 112 116 117 118 126 127 128 136 138 138 142 146 147 Capítulo 4. Estrutura de Controle e Funções Estruturas de Controle Ramificações Condicionais Loops Manipulação de Exceções Capturando e Lançando Exceções Exceções Personalizadas Funções Personalizadas Nomes e Docstrings Desempacotamento Argumentos e Parâmetros Acessando Variáveis no Escopo Global 149 149 149 151 153 153 158 161 166 167 170 viii BOOK - Programming in Python 3 - PRODUTO FINAL - 23-07-12.indb 8 17/04/2013 09:49:17 Funções Lambda Asserções Exemplo: make_html_skeleton.py Sumário Exercícios 172 173 175 181 182 Capítulo 5. Módulos Módulos e Pacotes Pacotes Módulos Personalizados Visão Geral da Biblioteca Padrão do Python Manipulação de String Programando em Linha de Comando Matemática e Números Hora e Data Algoritmos e Tipos de Dados de Coleção Formatos de Arquivos, Codificação e Persistência de dados Arquivo, Diretório e Manipulação de Processo Programação na Internet e em Redes de Comunicação XML Outros Módulos Sumário Exercício 185 185 189 192 202 202 204 205 205 207 208 211 214 216 217 219 220 Capítulo 6. Programação Orientada a Objeto Abordagem da Programação Orientada a Objeto Terminologia e Conceitos sobre Orientação a Objeto Classes Personalizadas Atributos e Métodos Herança e Polimorfismo Utilizando Propriedades para Controlar o Acesso aos Atributos Criando Tipos de Dados Completos e Totalmente Integrados Classes de Coleção Personalizadas Criando Classes que Agregam Coleções Criando Classes de Coleção Utilizando Agregação Criando Classes de Coleção Utilizando Herança Sumário Exercícios 223 224 225 228 228 233 236 238 251 251 258 265 272 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 Escrevendo e Lendo Dados Binários Pickles com Compressão Opcional Dados Binários Brutos com Compressão Opcional Escrevendo e Analisando Arquivos de Texto Escrevendo Texto Analisando Textos Analisando Textos Utilizando Expressões Regulares Escrevendo e Analisando Arquivos XML Árvores de Elementos DOM (Documento de Modelo de Objeto) Escrevendo XML Manualmente Analisando XML com SAX (API Simples para XML) Acesso Aleatório a Arquivos Binários Uma Classe Genérica de Arquivo de Registro Binário Exemplo: O Módulo de Classe BikeStock Sumário Exercícios 277 282 282 285 294 295 296 299 302 302 306 309 310 313 314 322 326 327 Capítulo 8. Técnicas de Programação Avançada Aprofundamento em Programação Procedural Utilizando Desvios com Dicionários Expressões Gerador e Funções Execução Dinâmica de Código e Importações Dinâmicas Funções Locais e Recursivas Decoradores de Funções e Métodos Anotações de Funções Aprofundamento em Programação Orientada a Objeto Controlando o Acesso aos Atributos Functors Gerenciador de Contexto Descritores Decoradores de Classe Classes Base Abstrata Herança Múltipla Metaclasses 329 330 330 331 334 341 346 350 353 353 357 359 362 367 370 377 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 Aplicação Parcial de Funções Exemplo: Valid.py Sumário Exercícios Capítulo 9. Processos e Threads Delegando Tarefas para Processos Delegando Tarefa com Threads Exemplo: Um Programa que Procura Palavra com Thread Exemplo: Programa que Encontra Arquivos Duplicados com Thread Sumário Exercícios 384 387 388 390 392 395 396 400 401 404 409 410 Capítulo 10. Redes de Comunicação Criando um Cliente TCP Criando um Servidor TCP Sumário Exercícios 413 414 420 427 427 Capítulo 11. Programação com Banco de Dados Bancos de Dados DBM Bancos de Dados SQL Sumário Exercícios 431 432 436 443 444 Capítulo 12. Expressões Regulares Linguagem da Expressão Regular do Python Caracteres e Classes de Caracteres Quantificadores Agrupando e Capturando Asserções e Sinalizadores O Módulo de Expressão Regular Sumário Exercícios 445 446 446 447 450 451 455 464 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 Programas em Estilo de Diálogo Programas em Estilo Janela-Principal Criando uma Janela Principal Criando um Diálogo Personalizado Sumário Exercícios 467 470 476 477 488 491 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. 70 Métodos de Strings #3 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